数据结构-栈错题集锦

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-栈错题集锦相关的知识,希望对你有一定的参考价值。

1.栈和队列具有相同的(    )。
A.抽象数据类型     B.逻辑结构     C.存储结构     D.运算

1.    B
线性表、栈和队列的逻辑结构都是相同的,都属于线性结构,只是它们对数据的运算不同,从而表现出不同的特点。



2.栈是()。
A.顺序存储的线性结构     B.链式存储的非线性结构
C.限制存取点的线性结构     D.限制存储点的非线性结构

2.    C
首先栈是一种线性表,所以B、D错。按存储结构的不同可分为顺序栈和链栈,但不可以把栈局限在某种存储结构上,所以A错。栈和队列都是限制存取点的线性结构。

 

7.设链表不带头结点且所有操作均在表头进行,则下列最不适合作为链栈的是(    )。
A.只有表头结点指针,没有表尾指针的双向循环链表
B.只有表尾结点指针,没有表头指针的双向循环链表
C.只有表头结点指针,没有表尾指针的单向循环链表
D.只有表尾结点指针,没有表头指针的单向循环链表

7.    C
通常栈的插入和删除在表头进行。对于选项C,插入和删除一个结点后,仍需将其变为循环单链表,因此需要找到其尾结点,时间复杂度为o(n)。

若不做题干中的限制,则栈顶可取表头(带头结点的链表)或第二个结点(不带头结点的链表),找指针的位置取头结点(带头结点的链表)或表头(不带头结点的链表)。
技术分享

 

8.向一个栈顶指针为top的链栈中插入一个x结点,则执行(    )。

A. top->next=x      B. x->next=top->next; top->next=x
C. x->next=top; top=x      D. x->next=top, top=top->next

8.    C
链栈釆用不带头结点的单链表表示时,进栈橾作在首部插入一个结点x(即x->next=top),插入完后需将top指向该插入的结点X。请思考当链栈存在头结点时的情况。

 

10.经过以下栈的操作后,变量x的值为(    )。
InitStack(st); Push(st, a); Push(st, b); Pop(st, x); Top(st,x);

10.    A
执行前3句后,栈st内的值为a,b,其中b为栈顶元素,执行第4句后,x的值为b,执行最后一句后x的值为a。

 

11.    3个不同元素依次进栈,能得到( )种不同的出栈序列。
A. 4    B. 5    C. 6    D. 7

11.  B
对于n个不同元素进栈,出栈序列的个数为

技术分享

上述的公式叫做卡特兰(Catalan)数,可釆用数学归纳法证明,有兴趣的读者可以参考组合数学的教材(知道该公式即可)。考题中给出的n值不会很大,可以根据栈的特点,若Xi已经出栈,则Xi前面的尚未出栈的元素一定逆置有序地出栈,因此可以釆取例举的方法。如a、b、c依次进栈的出栈序列有abc,acb, bac, bca, cba。

以上是关于数据结构-栈错题集锦的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题集锦——JavaScript

知识学习大二上数据结构知识点查漏补缺

知识学习大二上数据结构知识点查漏补缺

❤️[数据结构]动图+万字详解栈和队列(动图+实例)建议收藏❤️

数据结构王道错题集答案

数据结构时间复杂度错题集(选择题)