11[单选题]已知元素的入栈顺序为abcde,则下列哪种出栈顺序是不可能的(出栈和入栈操作可交叉进行?( )
A.edcbaB.cabdeC.dcbaeD.bcdea
参考答案:B
参考解析:abCde依次入栈,再依次出栈,得到出栈顺序edCba,所以选项A可能;我们现在来看选项B.第一个出栈的是C,&-Itl可以肯定栈中有b、a,等待入栈的是d、e,此时出栈的可能是b或d(d入栈马上出栈),不可能是a,所以选项B不可能;选项C,第一个出栈的是d,可以肯定栈中有C、b、a,等待入栈的是e,此时出栈的可能是C或e(C入栈马上出栈),若C、b、a依次出栈,e入栈马上出栈,刚好得到出栈顺序dCbae,因此选项C可能;选项D.第l个出栈的是b,可以肯定栈中有a,等待入栈的是c、d、e,C、d、e分别入栈马上又出栈得到出栈顺序bcde,最后a出栈,刚好得到出栈顺序bcdea,所以选项D可能。因此本题的正确答案是B。
12[单选题]下列关于栈的描述正确的是( )
A.在栈中只能插入元素而不能删除元素
B.在栈中只能删除元素而不能插入元素
C.栈是特殊的线性表,只能在-端插入或删除元素
D.栈是特殊的线性表,只能在-端插入元素,而在另-端删除元素
参考答案:C
参考解析:栈是一个特殊的线性表,只能在栈顶进行插入(又叫入栈)和删除(又叫出栈)操作;队列是一个、允许在队尾插入元素(又叫入队),在队头删除元 不素又叫出队)的线性袁 因此选项C正确。
13[单选题]一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )
A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA
参考答案:B
参考解析:栈是按照“先进后出(FILO)”或“后进先出(LIFO)”的原则组织数据的,栈只能在栈顶插入数据(称为入栈)和删除数据(称为出栈)。现将元素l、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是EDCBA54321。因此本题的正确答案是B。
14[单选题]下列关于栈的描述中错误的是( )。
参考答案:B
参考解析:栈是一种先进后出的线性表;栈既可以顺序存储,也可以链式存储;栈可以用来保护断点信息,具有记忆作用;只允许在栈顶插入和删除元素,所以对栈的插入与删除操作,不需要改变栈底指针;因此选项B正确。
15[填空题]假如刚开始时栈为空,依次有‘A’,‘B’,‘C’,‘D’四个元素入栈,此时栈底指针指向元素________,栈顶指针值为________(假设每个元素的长度为l)。执行四次出栈操作后把‘E’,‘F’,‘G’压入栈,问此时栈底指针指向元素________ ,此时栈的长度为________。
参考解析:A 4 E 3【分析】做这种题目用图解法最方便。用()表示空栈,当A入栈时表示为(A.,当8入栈时表示为(A,B.,总之这种表示法中最右边的元素为栈顶元素,最左边元素为栈底元素,栈的长度为括号中元素的个数,栈顶指针的值等于栈的长度.入栈时把元素插在最右边,出栈时把最右边的元素剔除。当A,B,C,D依次入栈时,栈的状态为(A,B,C,D.,栈底指针指向A,栈顶指针值为4。执行四次出栈后栈为空,这个过程可以表示如下:(A,B,C,D.→(A,B,C.→(A,B.→(A.→0最后E,F,G入栈后栈的状态为(E,F,G),此时栈底指针指向E,栈的长度为3。
16[填空题]在一个容量为l5的循环队列中,若头指针front=6,尾指针rear=4,则该循环队列中共有________个元素;若头指针front=4,尾指针rear=6,则该循环队列中共有________个元素;若头指针front=6,尾指针rear=6,则该循环队列中共有________个元素。
参考解析:13 2 1 5或0
17[单选题]已知元素的入栈顺序为abcde,则下列哪种出栈顺序是不可能的(出栈和入栈操作可交叉进行)?( )。
参考答案:B
参考解析:
18[单选题]下列叙述中正确的是( )。【考点4队列】
A.循环队列有队头和队尾两个指针,因此循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中元素的个数是由队头指针和队尾指针共同决定的
参考答案:D
参考解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。
19[填空题]设某循环队列的容量为50,头指针front=5(指向队头元素的前-位置),尾指针rear=29(指向队尾元素),则该循环队列中共有—________个元素。
参考解析:
24【分析】本题主要考查考生对循环队列的存储形式和入队运算、出队运算的理解。循环队列的初始状态为满或空(front=50,rear=50),出队:front=front+1(若front=50,则将1赋值给front),入队:rear=rear+1(若rear=51,则将1赋值给rear)。
我们现在来模拟从循环队列的初始状态,经过多少次入队WWW出队操作来达到最终状态front=5,rear=29。
假设循环队列的初始状态为满(front=50,rear=50),只能先出队,然后再入队。将一个元素出队,front=50+l=51,根据循环队列的规定应该将l赋值给front,即front=1,再将一个元素出队,front=1+1=2,直到出队5个元素,front=5。5个元素出队了,空出了5个空间,所以元素可以入队,将一个元素入队,rear=50+1=51,根据循环队列的规定应
该将l赋值给rear,即rear=1,再将一个元素入队,rear=1+1=2,直到入队29个元素,rear=29。由于出队只空出5个空间,所以无法入队29个元素。因此循环队列的初始状态为满不成立。
假设循环队列的初始状态为空(front=50,rear=50),只能先入队,然后再出队。rear=29,表示有29个元素入队了,也即队列中只有29个元素。现在front=5,表示要有5个元素出队,队列中只剩下29—5=24个元素。因此循环队列的初始状态只能为空。队列中有24个元素。
同理,若循环队列的最终状态为front=29,rear=5,我们可以肯定循环队列的初始状态为满,则队中有50—29+5=26个元素。
若循环队列的最终状态为front=29,rear=29,我们可以肯定循环队列为满或空,所以循环队列中有50或O个元素。
总结,规律如下:若front>rear,队列中有n-front+rear个元素(其中n为循环队列的容量);若front
20[填空题]假如刚开始时栈为空,依次有‘A’,‘B’,‘C’,‘D’四个元素入栈,此时栈底指针指向元素( ),栈顶指针值为( )(假设每个元素的长度为l)。执行四次出栈操作后把‘E’,‘F’,‘G’压入栈,问此时栈底指针指向元素( ),此时栈的长度为( )。
参考解析:
A 、 4 、 E 、 3
21[填空题]在一个容量为l5的循环队列中,若头指针front=6,尾指针rear=4,则该循环队列中共有( )个元素;若头指针front=4,尾指针rear=6,则该循环队列中共有( )个元素;若头指针front=6,尾指针rear=6,则该循环队列中共有( )个元素。
参考解析:1 3 、 2 、1 5或0
22[单选题]设有如下关系表:
则下列操作中正确的是( )。
参考答案:B
参考解析:
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |