- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章栈和队(参考答案)
第三章 栈和队列
一、判断题
1、链栈的初始化是指开辟足够多的结点,然后置栈顶指针为 NULL。 ( × )
2、递归定义的数据结构通常不需要用递归的算法来实现对它的操作。( × )
二、填空题
1、向一个链式栈插入一个新结点时,首先把栈顶指针的值赋给新结点的指针域,然后把新结点的存储位置赋给___栈顶指针_____。
2、迷宫问题是一个回溯控制的问题,最好使用____栈______的方法来解决。
3、有如下递归过程:
Void Print(int w)
{
int i;
if (w!=0)
{
Print(w?1);
for (i=1;i=w;i++) printf(“%3d”,w);
printf(“\n”);
}
}
调用语句print(4)的结果是__________。
1
2 2
3 3 3
4 4 4 4
4、假设用循环单链表实现队列,若队列非空,且队尾指针为R, 则将新结点S加入队列时,
需执行下面语句:_ S-next=R-next _________;___ R-next=S _______;R=S;
三、选择题
1、设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。假设栈或队的初始状态都是空。
现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是 A 2 ,第二次出栈得到的元素是 B 4 ;类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是 C 1 ,第二次出队得到的元素是 D 2 。经操作后,最后在栈中或队中的元素还有 E 2 个。
供选择的答案:
A~D:①a1 ②a2 ③ a3 ④a4
E:①1 ②2 ③ 3 ④ 0
2、 栈是一种线性表,它的特点是 A 2 。设用一维数组A[1,…,n]来表示一个栈,A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。往栈中推入(PUSH)一个新元素时,变量T的值 B 2 ;从栈中弹出(POP)一个元素时,变量T的值 C 1 。设栈空时,有输入序列a,b,c,经过PUSH,POP,PUSH,PUSH,POP操作后,从栈中弹出的元素的序列是 D 6 ,变量T的值是 E 4 。
供选择的答案:
A:① 先进先出 ②后进先出 ③进优于出 ④出优于进 ⑤随机进出
B,C:① 加1 ②减1 ③不变 ④清 ⑤ 加2 ⑥减2
D: ① a,b ②b,c ③c,a ④b,a ⑤ c,b ⑥a,c
E: ① n+1 ②n+2 ③ n ④ n-1 ⑤ n-2
3、在做进栈运算时,应先判别栈是否 A 2 ;在做退栈运算时,应先判别栈是否 B 1 。当栈中元素为n个,做进栈运算时发生上溢,则说明该栈的最大容量为 C 2 。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 D 4 分别设在这片内存空间的两端,这样,只有当 E 3 时,才产生上溢。
供选择的答案:
A,B:①空 ② 满 ③ 上溢 ④ 下溢
C: ①n-1 ② n ③ n+1 ④ n/2
D: ① 长度 ②深度 ③ 栈顶 ④ 栈底
E: ①两个栈的栈顶同时到达栈空间的中心点
②其中一个栈的栈顶到达栈空间的中心点
③两个栈的栈顶在达栈空间的某一位置相遇
④两个栈均不空,且一个栈的栈顶到达另一个栈的栈底
4、 以下哪一个不是队列的基本运算? B
A)在队尾插入一个新元素 B)从队列中删除第i个元素
C)判断一个队列是否为空 D)读取队头元素的值
四、综合题
1、SElem Type为char)。
void main( ){
Stack S;
char x,y;
InitStack(S);
x=’c’;y=’k’;
Push(S,x);
Push(S,’a’);
Push(S,y);
}
2、QElem Type为char)。
void main( ){
Queue Q; Init Queue (Q);
char x=’e’; y=’c’;
EnQueue(Q,’h’); EnQueue (Q,’r’); EnQueue (Q,’y’);
DeQueue (Q,x); EnQueue (Q,x);
DeQueue (Q,x); EnQueue (Q,’a’);
while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); };
printf
文档评论(0)