《数据结构域算法设计-第3章 栈和队列教案》由会员分享,可在线阅读,更多相关《数据结构域算法设计-第3章 栈和队列教案(16页珍藏版)》请在金锄头文库上搜索。
1、第 3 章 栈和队列一一 选择题选择题 1. 对于栈操作数据的原则是( ) 。 A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序 2. 在作进栈运算时,应先判别栈是否( ),在作退栈运算时应先判别栈是否( )。当栈中元素为 n 个,作 进栈运算时发生上溢,则说明该栈的最大容量为( )。 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 ( ) 分别设在这片内存空间的两端,这样,当( )时,才产生上溢。 , : A. 空 B. 满 C. 上溢 D. 下溢 : A. n-1 B. n C. n+1 D. n/2 : A. 长度 B. 深度 C.
2、 栈顶 D. 栈底: A. 两个栈的栈顶同时到达栈空间的中心点. B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底. 3. 一个栈的输入序列为 123n,若输出序列的第一个元素是 n,输出第 i(10) ? x* f(x-1):2);int i ;i =f(f(1); A2 B. 4 C. 8 D. 无限递归 19. 表达式 a*(b+c)-d 的后缀表达式是( )。 Aabcd*+- B. abc+*d- C. abc*+d- D. -+*abcd 20*. 表达式 3* 2(4+2*2-6*3)-5 求
3、值过程中当扫描到 6 时,对象栈和算符栈为( ) ,其中为乘幂 。 A. 3,2,4,1,1;(*(+*- B. 3,2,8;(*- C. 3,2,4,2,2;(*(- D. 3,2,8;(*(- 21. 设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳。 A线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈 22. 用链接方式存储的队列,在进行删除运算时( ) 。 A. 仅修改头指针 B. 仅修改尾指针 C. 头、尾指针都要修改 D. 头、尾指针可能都要修改 23. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则
4、在进行删除操作 时( )。 A仅修改队头指针 B. 仅修改队尾指针 C. 队头、队尾指针都要修改 D. 队头,队尾指针都可能要修改 24. 递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结构。 A队列 B多维数组 C栈 D. 线性表 25. 假设以数组 Am存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的元素个数为( ) 。A(rear-front+m)%m Brear-front+1 C(front-rear+m)%m D(rear-front)%m 26. 循环队列 A0.m-1存放其元素值,用 front 和 rear 分别表示队头和队尾
5、,则当前队列中的元素数是( )。A. (rear-front+m)%m B. rear-front+1 C. rear-front-1 D. rear-front 27. 循环队列存储在数组 A0.m中,则入队时的操作为( ) 。A. rear=rear+1 B. rear=(rear+1) % (m-1)C. rear=(rear+1) % m D. rear=(rear+1)%(m+1) 28. 若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一个元 素,再加入两个元素后,rear 和 front 的值分别为多少?( ) A
6、. 1 和 5 B. 2 和 4 C. 4 和 2 D. 5 和 1 29. 用单链表表示的链式队列的队头在链表的( )位置。 A链头 B链尾 C链中 D任意 30*. 若以 1234 作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输出受限的双端队列 得到的输出序列是( )。A. 1234 B. 4132 C. 4231 D. 4213 31. 最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空的条件是 ( ) 。A. (rear+1) % n=front B. rear=front Crear+1=front D. (rear-l) % n=fr
7、ont 32. 栈和队列的共同点是( ) 。 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点 33. 栈的特点是( ),队列的特点是( ),栈和队列都是( ) 。若进栈序列为 1,2,3,4 则( )不可能是一个出栈序列(不一定全部进栈后再出栈) ;若进队列的序列为 1,2,3,4 则( )是一个出队列序 列。, : A. 先进先出 B. 后进先出 C. 进优于出 D. 出优于进 : A.顺序存储的线性结构 B.链式存储的线性结构 C.限制存取点的线性结构 D.限制存取点的非线性结构, : A. 3,2,1,4 B. 3,2,4,1 C. 4,2,
8、3,1 D. 4,3,2,1 F. 1,2,3,4 G. 1,3,2,4 34. 栈和队都是( ) A顺序存储的线性结构 B. 链式存储的非线性结构 C. 限制存取点的线性结构 D. 限制存取点的非线性结构 35. 设栈 S 和队列 Q 的初始状态为空,元素 e1,e2,e3,e4,e5 和 e6 依次通过栈 S,一个元素出栈后即进队列 Q,若 6 个元素出队的序列是 e2,e4,e3,e6,e5,e1 则栈 S 的容量至少应该是( )。 A 6 B. 4 C. 3 D. 2 36.设有编号为 1,2,3,4 的四辆列车,顺序进入一个栈式结构的站台,下列不可能的出站顺序为( ) A1234B1
9、243C1324D1423 37.如果以链表作为栈的存储结构,则出栈操作时( ) A必须判别栈是否满B必须判别栈是否为空 C必须判别栈元素类型D队栈可不做任何判别 38.元素 A,B,C,D 依次进栈以后,栈顶元素是( ) AABBCCDD 39.顺序栈存储空间的实现使用( )存储栈元素。 A链表B数组C循环链表D变量 40.一个顺序栈一旦说明,其占用空间的大小( ) A已固定B可以变动C不能固定D动态变化 二二 判断题判断题 1. 消除递归不一定需要使用栈, ( ) 2. 栈是实现过程和函数等子程序所必需的结构。 ( ) 3. 两个栈共用静态存储空间,对头使用也存在空间溢出问题。 ( ) 4
10、两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空 间的两端。 ( ) 5. 即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。6*. 有 n 个数顺序(依次)进栈,出栈序列有 Cn 种,Cn=1/(n+1)*(2n)!/(n!)*(n!)。 ( ) 7. 栈与队列是一种特殊操作的线性表。 ( ) 8. 若输入序列为 1,2,3,4,5,6,则通过一个栈可以输出序列 3,2,5,6,4,1. ( ) 9. 栈和队列都是限制存取点的线性结构。 ( ) 10若输入序列为 1,2,3,4,5,6,则通过一个
11、栈可以输出序列 1,5,4,6,2,3。 ( ) 11. 任何一个递归过程都可以转换成非递归过程。 ( ) 12. 只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。 ( ) 13. 队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。 ( ) 14. 通常使用队列来处理函数或过程的调用。 ( ) 15. 队列逻辑上是一个下端和上端既能增加又能减少的线性表。 ( ) 16. 循环队列通常用指针来实现队列的头尾相接。( ) 17. 循环队列也存在空间溢出问题。 ( ) 18. 队列和栈都是运算受限的线性表,只允许在表的两端进行运算。 ( ) 19. 栈和队列
12、都是线性表,只是在插入和删除时受到了一些限制。 ( ) 20. 栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。 ( ) 21.空栈就是所有元素都为 0 的栈。 22.一个栈的输入序列为:A,B,C,D,可以得到输出序列:C,A,B,D。 23.队列是限制在两端进行操作的线性表。 24.在循环队列中,若尾指针 rear 大于头指针 front,其元素个数为 rear-front。 25.队列是一种“后进先出”的线性表。 三三 填空题填空题 1栈是_的线性表,其运算遵循_的原则。 2_是限定仅在表尾进行插入或删除操作的线性表。 3. 一个栈的输入序列是:1,2,3 则不可能的栈输出序列是
13、_。 4. 设有一个空栈,栈顶指针为 1000H(十六进制),现有输入序列为 1,2,3,4,5,经过 PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH 之后,输出序列是_,而栈顶指针值是_H。设栈为顺序栈,每个 元素占 4 个字节。 5. 当两个栈共享一存储区时,栈利用一维数组 stack(1.n)表示,两栈顶指针为 top1与 top2,则当栈 1 空时, top1为_,栈 2 空时 ,top2为_,栈满时为_。 6两个栈共享空间时栈满的条件_。 7在作进栈运算时应先判别栈是否_(1)_;在作退栈运算时应先判别栈是否_(2)_;当栈中元素为 n 个,作进栈运 算时发生上溢,则说明该栈的最大容量为_(3)_。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享 一片连续的空间时,应将两栈的_(4)_分别设在内存空间的两端,这样只有当_(5)_时才产生溢出。 8. 多个栈共存时,最好用_作为存储结构。 9用 S 表示入栈操作,X 表示出栈操作,若元素入栈的顺序为 1234,为了得到 1342 出栈顺序,相应的 S 和 X 的 操作串为_。 10. 顺序栈用 data1.n存储数据,栈顶指针是 top,