王道数据结构第三章

 4.假定利用数纽 a[n]顺序存储一个栈, 用 top 表示找顶指针,用 top==-1 表示找空,并已知找未满,当元素 x 进找时所执行的操作为(C)。

A. a [-- top]  =x  B. a [top--] =x 
C. a [++top] =x  D. a [ top++]=x 

注意栈的生长方向,由于本题中top==-1时为栈空,故需要先挪动指针再进行压栈,否则将导致程序错误。

7. 设链表不带头结点且所有操作均在表头进行,则下列最不适合作为链找的是( )。

A. 只有表头结点指针,没有表尾指针的双向循环链表

B. 只有表尾结点指针,没有表头指针的双向循环链表

C. 只有表头结点指针, 没有表尾指针的单向循环链表

D. 只有表尾结点指针,没有表头指针的单向循环链表 

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

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

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 

向一个栈顶指针为X的链栈插入X结点,即在链栈头部插入,需要执行x>next=top,然后再将top指向刚插入的结点x。

16.设有下图所示的火车车轨,入口到出口之间有n条轨道,列车的行进方向均为从左至右,列车可驶入任意一条轨道。现有编号为1~9的9列列车,驶入的次序依次是8,4,2,5,3,9,1,6,7。若期望驶出的次序依次为1~9,则n至少是(C)

A.2
B.3
C.4
D.5

分析:入队顺序为8、4、2、5、3、9、1、6、7,出队顺序为1~9。入口和出口之间有多个队列(n条轨道),且每个队列(轨道)可容纳多个元素(多列列车)。如此分析:显然先入队的元素必须小于后入队的元素(否则,如果8和4入同一队列,8在前4在后,那么出队时只能是8在前4在后),这样8入队列1,4入队列2,2入队列3,5入队列2(按照前面的原则“大的元素在小的元素后面”也可以将5入队列3,但这时剩下的元素3就必须放到一个新的队列里面,无法确保“至少”,本应该是将5入队列2,再将3入队列3,不增加新队列的情况下,可以满足题意“至少”的要求),3入队列3,9入队列1,这时共占了3个队列,后面还有元素1,直接再占用一个新的队列4,1从队列4出队后,剩下的元素6和7或者入队到队列2或者入队到队列3(为简单起见我们不妨设n个队列的序号分别为1、2、…、n),这样就可以满足题目的要求。综上,共占用了4个队列。当然还有其他的入队出队的情况,请考生们自己推演。但要确保满足:①队列中后面的元素大于前面的元素;②确保占用最少(即满足题目中的“至少”)的队列。

18. 一个找的输入序列为 1, 2, 3,…n,输出序列的第一个元素是 i,则第j 个输 出元素是( D)。

A. i-j-1

 B. i -j

 C. J- i + 1

 D. 不确定

注意本题陷阱,输出序列的第一个元素是i,即为随机数,不是最后或者第一个数。

21. 若己知一个栈的入栈序列是 I , 2, 3, 4,其出栈序列为 P1,p2,p3,p4,则p2,p4 不可能是()。
A. 2,4 
C. 4 3 
B. 2, 1 
D. 3, 4 

若p2为4,说明在4入栈前,1,2,3已经进栈,且有一个已经出栈,3不可能最后出栈,因此C是得不到的,其余3个答案均有可能。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值