第三章栈和队列习题与解析good..doc
文本预览下载声明
第四章 栈和队列一 判断题(y/n)nyynnynnn
1做进栈运算时应先判别,栈是否为空。
2,做退栈运算时应先判别,栈是否为空。
3,当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为n.
4,为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存 空间时,应将两栈的栈顶分别设在着片内存空间的两端。
5, 只有当两个基本栈的栈底在栈空间的某一位置相遇时,才产生上溢。
6, 栈是一种线性表,它的特点是后进先出。
7, 设一数列的顺序为1,2,3,4,5,6, 通过栈结构可以排成的顺序必须是3,2,5,6,4,1.
8, 设有一个空栈,栈顶指针为1000H(十六进制,下同),现有输入序列1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH后,输出序列是2,1.
9, 设有一个空栈,栈顶指针为1000H(十六进制,下同),现有输入序列1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH后,栈顶指针是不是1005H.
二 单选题 (请从下列A,B,C,D选项中选择一项)
1,栈的特点是:
先进先出
后进先出
进优于出
出优于进
2,队列的特点是:
先进先出
后进先出
进优于出
出优于进
3,栈与队列都是:
顺序存储的线性结构
链式存储的线性结构
限制存取点的线性结构
限制存取点的非线性结构
4,若进栈序列为1,2,3,4,则()不可能是一个出栈序列。
3,2,1,4
3,2,4,1
4,2,3,1
4,3,2,1
1,2,3,4
1,3,2,4
5,若进栈队列的序列为1,2,3,4,则()是一个出队列序列。
3,2,1,4
3,2,4,1
4,2,3,1
4,3,2,1
1,2,3,4
1,3,2,4
6,若一个栈的输入序列是:1,2,3,...,n,输出序列的第一个元素是n,则第i个输出元素是:
不确定
n-i
n-i+1
i
n-i-1
三 编程题
1,以flag为标志位,写出循环队列中插入算法
2,以flag为标志位,写出循环队列中删除算法
改写顺序栈的进栈成员函数,要求当栈满时执行一个操作进行栈满处理。其功能是:动态创建一个比原来的栈数组大二倍的新数组,代替原来的栈数组,原来栈数组中的元素占据新数组的前位置。【解答】{
if ( isFull ( ) ) stackFull ( ); //栈满,做溢出处理进栈 }
{
Type * temp = new Type [ 2 * maxSize ]; //创建体积大一倍的数组 传送原数组的数据删去原数组数组最大体积增长一倍新数组成为栈的数组空间 }
4-3 铁路进行列车调度时常把站台设计成栈式结构的站台,如右图所示。试问:设有编号为的六辆列车顺序开入栈式结构的站台则可能的出栈序列有多少种若进站的六辆列车顺序如上所述那么是否能够得到和的出站序列如果不能说明为什么不能如果能说明如何得到即写出进栈或出栈的序列。【解答】可能的不同出栈序列有 种。不能得到和这样的出栈序列。因为若在之后再将出栈,则必须一直在栈中,此时先进栈,后进栈,应压在上面,不可能先于出栈。也是这种情况。出栈序列和可以得到。 5 6 2 2 4 4 4 4 1 1 1 1 1 1 1 1
3 32 32 325 325 3256 32564 325641
5 3 4 4 1 2 2 2 2 6
1 1 13 135 1354 13542 13542 135426
4-4 试证明:若借助栈可由输入序列…, n得到一个输出序列…, pn (它是输入序列的某一种排列,则在输出序列中不可能出现以下情况,即存在,使得。提示:用反证法【解答】因为借助栈由输入序列…, n,可得到输出序列…, pn ,如果存在下标,满足,那么在输出序列中,可能出现如下种情况:进栈,出栈,进栈,出栈,进栈,出栈。此时具有最小值的排在最前面位置,具有中间值的排在其后位置,具有最大值的排在位置,有不可能出现的情形;进栈,出栈,进栈,进栈,出栈,出栈。此时具有最小值的排在最前面位置,具有最大值的排在位置,具有中间值的排在最后位置,有不可能出现的情形;进栈,进栈,出栈,出栈,进栈,出栈。此时具有中间值的排在最前面位置,具有最小值的排在其后位置,有不可能
显示全部