下面的算法中使用了一个栈st,阅读该算法,回答下列问题:(1)算法的功能是:__________________________________(2) 若单链表中各结点中数据的逻辑顺序为 { ‘u’,‘n’,‘i’,‘v’,‘e’,‘r’,‘s’,‘i’,‘t’,‘y’ },执行这个算法,跟踪栈的变化。#include "stack.h"#include "LinkList.h"void unknown ( ){//此单链表带有表头结点,它的表头指针为first。Stack S;ListNode*p = first->link, *q;while ( p != NULL ){Push (p, S);p = p->link;}p = first;p->link = NULL;while ( !StackEmpty( ) ) //将栈中保存的结点依次出栈{q=Pop (S );q->link = p->link;p->link = q;p = q;}}
查看答案
简述以下算法的功能:(1)Status algo1(Stack S){int i,n,A[255];n=0;while(!StackEmpty(S)){n++;Pop(S,A[n]);}for(i=1;i<=n;i++)Push(S,A[i]);}(2)Status algo2(Stack S,int e){Stack T;int d;InitStack(T);while(!StackEmpty(S)){Pop(S,d);if(d!=e)Push(T,d);}while(!StackEmpty(T){Pop(T,d);Push(S,d);}}
1,2,3,4的四辆车,顺序进入一个栈式结构的站台(栈的大小为4),试写出这四辆车开出站的所有可能的顺序(每辆车入站后出站的时间未知):
在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶,当做出栈处理时,top变化为( )。
A. top不变
B. top=0
C. top--
D. top++
循环队列的出队操作为( )。
A. sq.front=(sq.front+1)%maxsize
B. sq.front=sq.front+1
C. sq.rear=(sq.rear+1)%maxsize
D. sq.rear=sq.rear+1