栈和队列_习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章栈和队列

一、单项选择题

1.当利用大小为N的数组顺序存储一个栈时,假定用top=N表示栈空,则向这个栈入栈时,首先应执行( )语句修改top指针。

A. top++

B. top--

C. top=0

D. top=N-1

2.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top= -1表示栈空,并已知栈未满,当元素X入栈时执行的操作为( )。

A. a[--top]=X

B. a[top--]=X

C. a[++top]=X

D. a[top++]=X

3.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top=-1表示栈空,并已知栈未空,当退栈并返回栈顶元素执行的操作为( )。

A. return a[--top]

B. return a[top--]

C. return a[++top]

D. return a[top++]

4.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当p所指向的结点进栈时,执行的操作为()

A. p->next=top;top=top->next

B. top=p;p->next=top

C. p->next=top->next

D. p->next=top;top=p

5.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当执行退栈时,执行的操作为()

A. top->next=top

B. top=top->data

C. top=top->next

D. top->next=top->next->next

6.若让元素1,2,3,4依次进栈,则出栈次序不可能出现( )种情况。

A.3,2,1,4

B.2,1,4,3

C.4,3,2,1

D.1,4,2,3

7. 在一个循环队列中,队首指针指向队首元素的( )位置。

A. 前一个

B. 后一个

C. 当前

D. 最后

7. 在一个链队中,假设f与r分别为队首和队尾指针,则插入s所指结点的运算时( )

A.f->next=s;f=s

B.r->next=s;r=s

C.s->next=r;r=s

D.s->next=f;f=s

8. 假定利用数组a[N]循环顺序存储一个队列,用f和r分别表示队首和队尾指针,并已知队未满,当元素X入队时执行的操作为( )。

A. a[++r%N]=X

B. a[r++%N]=X

C. a[--r%N]=X

D. a[r--%N]=X

9. 假定利用数组a[N]循环顺序存储一个队列,用f和r分别表示队首和队尾指针,并已知队未空,当进行出队时执行的操作为( )。

A. return a[++r%N]=X

B. return a[r++%N]=X

C. return a[--r%N]=X

D. return a[r--%N]=X

10. 判断一个队列QU(最多元素为MaxSize)为满队列的条件是( )

A. QU->rear-QU->front==MaxSize

B. QU->rear-QU->front-1==MaxSize

C. QU->rear==QU->front

D. D.QU->front==QU->rear

11. 循环队列中是否可以插入下一个元素,( )

A. 与队头指针和队尾指针的值有关

B. 只与队尾指针的值有关,与队头指针的值无关

C. 只与数组大小有关,与队首指针和队尾指针的值无关

D.与曾经进行过多少次插入操作有关

12.栈和队列的共同点是( )

A.都是先进后出

B.都是先进先出

C.只允许在端点处插入和删除元素

D.没有共同点

二、填空题

1.在一个用一维数组a[N]表示的顺序栈中,该栈所含元素的个数最少为________个,最多为_________个。

2.向一个顺序栈中插入一个元素时,首先使_______后移一个位置,然后把新元素____到这个位置上.

3.从一个顺序栈删除元素时,首先取出______,然后再使______减1。

4.一个顺序循环队列存在于a[M]中,假定队首队尾指针分别为front和rear,则判断队空的条件为_________,判断队满的条件为____________。

5.一个顺序循环队列存在于a[M]中,则求出队首和队尾指针的下一个位置的计算公式分别为__________和______________.

6.设元素1,2,3,4,5依次进栈,若要在输出端得到序列34251,则应进行的操作序列为push(S,1), push(S,2),_________,pop(S), push(S,4),pop(S),________,_________, pop(S), pop(S).

三、简答题

1.何为队列的上溢现象?何为假溢出现象?有哪些解决办法?并分别描述其工作原理?2.对于一个栈,给出输入项A,B,C,如果输入队列由A,B,C组成,试给出全部可能的输出序列。

四、算法分析题

1.跟踪以下代码,显示每次调用后队列中的内容。

InitQueue(qu);

EnQueue(qu,’A’);

EnQueue(qu,’B’);

EnQueue(qu,’C’);

DeQueue(qu,x);

DeQueue(qu,x);

EnQueue(qu,’D’);

EnQueue(qu,’E’);

EnQueue(qu,’F’);

DeQueue(qu,x);

EnQueue(qu,’G’);

DeQueue(qu,x);

DeQueue(qu,x);

DeQueue(qu,x);

五、算法设计题

1.编写一个算法,利用栈的基本运算将指定栈中的内容进行逆转。

2.编写一个算法,利用队列的基本运算返回指定队列中的最后一个元素。

相关文档
最新文档