|  | 【基础知识题】
 
 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);
 }
 }
 
 |  | 【基础知识题】
 |  |