| 【基础知识题】
1.若按3.1.1节中所示铁道进行车厢调度(注意:两侧铁道均为单向行驶道),则请回答: (1) 如果进站的车厢序列为123,则可能得到的出站车厢序列是什么?
(2) 如果进站的车厢序列为123456,则能否得到435612和135426的出站序列,并请说明为什么不能得到或者如何得到(即写出以'S'表示进栈和以'X'表示出栈的栈操作序列)。 2.简述栈和线性表的差别。 3.写出下列程序段的输出结果(栈的元素类型
SElemType 为 char)。 void main( ){ Stack S; char
x, y; InitStack(S); x='c'; y='k'; Push(S, x); Push(S, 'a');
Push(S, y); Pop(S, x); Push(S, 't'); Push(S, x); Pop(S, x); Push(S,
's'); while (!StackEmpty(S)) { Pop(S, y); printf(y);
}; printf(x); } 4.简述以下算法的功能(栈的元素类型 SElemType
为 int )。 (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); } }
5.简述队列和栈这两种数据类型的相同点和差异处。 6.简述以下算法的功能(栈和队列的元素类型均为
int)。 void algo3(Queue &Q)
{ Stack S; int d; InitStack (S); while
(!QueueEmpty(Q)) { DeQueue(Q, d); Push(S, d); }
while (!StackEmpty(S)) { Pop(S, d); EnQueue(Q,
d); } } | |
【基础知识题】 | |