数据结构:面试题目-专项练习-栈-习题练习

1、下列关于栈叙述正确的是( )。
正确答案: D 你的答案: D (正确)
算法就是程序
设计算法时只需要考虑数据结构的设计
设计算法时只需要考虑结果的可靠性
以上三种说法都不对
解析:A:程序是数据结构+算法,错。
B,C:设计一个算法时,考虑的因素很多。首先要满足算法的五个基本特性:确定性,可行性,有穷性,输入,输出。其次,再从可读性,健壮性,低耦合高效率,低存储等方面进行优化。

2、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )

正确答案: C 你的答案: D (错误)
e d c b a
d e c b a
d c e a b
a b c d e

3、若有一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()
正确答案: C 你的答案: C (正确)
n-i
n-i-1
n-i+1
不确定

4、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是
正确答案: D 你的答案: A (错误)
1 5 4 3 2
2 3 1 4 5
2 3 4 1 5
5 4 1 3 2

5、若让元素 1, 2, 3 依次进栈,则出栈次序 1, 3, 2 是不可能出现的情况 。( )
正确答案: B 你的答案: A (错误)
正确
错误

6、支持子程序调用的数据结构是( )。
正确答案: A 你的答案: A (正确)


队列
二叉树

7、现有初始状态均为空的栈X和队列Y,元素a、b、c、d、e、f、g依次进入栈X,每个元素出栈后即进入队列Y,如果出队列的顺序为b、c、f、e、g、d、a,则要求栈X最小容量为
正确答案: C 你的答案: C (正确)
6
5
4
3
8、在栈中,()保持不变。
正确答案: B 你的答案: A (错误)
栈的顶
栈的底
栈指针
栈中的数据

9、判定一个顺序栈 st (最多元素为 MaxSize )为空的条件是 。
正确答案: B 你的答案: B (正确)
st->top != -1
st->top == -1
st->top != MaxSize
st->top == MaxSize

10、
牛客-68头像牛客-68
s->top 是栈顶指针,空栈为-1 . 插入元素 s->top++ 出栈 s->top-- 栈满 s->top = maxSize-1

11、任何二叉树的后序线索树进行后序遍历时都必须用栈()
正确答案: B 你的答案: A (错误)


解析:一般情况下,二叉树的后序线索树是需要额外用到栈的。虽然每个节点都带有前驱和后续指针,但若前驱和后续指针都被占用,那么只能用栈。注意,一种情况除外,那就是只有左半边或者右半边的二叉树是不需要用到栈的。

12、若栈采用链式存储结构,则下列说法中正确的是()
正确答案: D 你的答案: B (错误)
需要判断栈满但不需要判断栈空
不需要判断栈满也不需要判断栈空
需要判断栈满且需要判断栈空
不需要判断栈满但需要判断栈空

13、调用函数时,入参及返回地址使用了()
正确答案: D 你的答案: D (正确)
队列
多维数组
顺序表

14、下列关于堆和栈的区别描述错误的有?
正确答案: A 你的答案: C (错误)
申请方式的不同,堆是系统自动分配,栈是自己申请
栈的大小是固定的,堆的大小受限于系统中有效的虚拟内存
栈的空间由系统决定何时释放,堆需要自己决定何时去释放
堆的使用容易产生碎片,但是用起来最方便
解析:堆:自己做菜自己吃,什么时候收盘子自己知道,但是可能会浪费(产生碎片),因为可能自己一个人吃不完。 桟:公司食堂,你吃饭由食堂工作人员帮你打饭和分配位置,吃完了工作人员帮你收盘子。你浪费粮食(碎片)那是不可能的,因为食堂会把碎片拿去喂猪。

15、递归式的先序遍历一个n节点,深度为d的二叉树,需要栈空间的大小为______。
正确答案: B 你的答案: D (错误)
O(n)
O(d)
O(logn)
O(nlogn)

16、在Windows中,下列关于堆和栈的说法中错误的是?
正确答案: B 你的答案: D (错误)
堆都是动态分配的,没有静态分配的堆;栈有静态分配和动态分配2种分配方式。
堆的生长方向是向下的,即向着内存地址减小的方向增长;栈的生长方向是向上的,即向着内存地址增加的方向增长。
对堆的频繁new/delete会造成内存空间的不连续,从而造成大量的碎片;栈则不会存在这个问题
栈是由编译器自动治理;堆的释放工作由程序员控制,轻易产生内存泄露。
解析:堆是不连续的,生长方向是向上的,即向着内存地址增大的方向增长;栈是连续的,生长方向是向下的,即向着内存地址减小的方向增长。

17、下列数据中,()是非线性数据结构
正确答案: C D 你的答案: C (错误)

队列
完全二叉树

18、已知一个栈的入栈顺序为 a b c d e,则可能的出栈顺序为:()
正确答案: A B D 你的答案: A B (错误)
a b c d e
c b d e a
b d a c e
b a d e c

19、如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()
注:一个元素进栈后可以马上出栈,不用等全部进栈
正确答案: B C 你的答案: C (错误)
e3,e1,e4,e2
e2,e4,e3,e1
e2,e3,e4,e1
任意顺序都有可能

20、下面的一些说法哪些是正确的:( )
正确答案: B C 你的答案: B E F (错误)
缓存策略中基于LRU的淘汰策略,在缓存满时,会把最近进入缓存的数据先淘汰,以保持高的命中率
中缀表达式A+(B+C)D的后缀表但式为:ABC+D+
堆栈是一种LIFO的数据结构
高级语言通过编译或者即时编译(JIT)后成为汇编语言被机器装载执行
TCP协议和UDP协议都在IP协议之上,TCP是面向连接的,UDP是面向非连接的,但无论TCP还是UDP建立通信都需要一次握手,以确保对方的端口已经打开
现代的操作系统一般都分为用户态和内核态,用户态和内核态的切换是经常发生的,程序员不需要对内核态和用户态的切换进行编程关注

21、
栈是特殊的线性表,它 的插入和删除分别在线性表的两端进行 。 ( )

正确答案: B 你的答案: B (正确)
正确
错误

22、下面哪一种操作不是stack的基本操作?
正确答案: D 你的答案: C (错误)
入栈
出栈
检查是否为空
排序栈中元素

23、下列叙述中正确的是( )
正确答案: A 你的答案: B (错误)
在栈中,栈顶指针的动态变化决定栈中元素的个数
在循环队列中,队尾指针的动态变化决定队列的长度
在循环链表中,头指针和链尾指针的动态变化决定链表的长度
在线性链表中,头指针和链尾指针的动态变化决定链表的长度

24、下列情况中,不能使用栈(stack)来解决问题的是?
正确答案: D 你的答案: B (错误)
将数学表达式转换为后辍形式
实现递归算法
高级编程语言的过程调用
操作系统分配资源(如CPU)

25、利用栈完成数制转换,将十进制的169转换为八进制,出栈序列为()
正确答案: A 你的答案: D (错误)
251
521
215
152
解析:其实就是直接转换就完事了,转换的原理就是用堆栈实现的

26、设栈的输入序列为 123……n ,输出序列为 a1,a2,a3,……,an ,若存在 1<=k<=n ,使得 ak=n ,则当 k<=i<=n 时, ai 为 。

正确答案: D 你的答案: A (错误)
n-i+1
n-(i-k)
i
不确定

27、向一个栈顶指针为hs的链栈中插入一个s结点时,应执行______。
正确答案: B 你的答案: C (错误)
hs->next=s;
s->next=hs; hs=s;
s->next=hs->next;hs->next=s;
s->next=hs; hs=hs->next;

28、设栈的顺序存储空间为 S(1:m) ,初始状态为 top=0 。现经过一系列正常的入栈与退栈操作后, top=m+1 ,则栈中的元素个数为( )

正确答案: A 你的答案: D (错误)
不可能
m+1
0
m

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒椒。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值