【基础知识题】

 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);
   }
  }
 

 
【基础知识题】