第1题:设有一个栈与一个队列的初始状态均为空。现有一个序列A,B,C,D,E,F,G,H。先分别将序列中的前4个元素依次入栈,后4个元素依次入队﹔然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。最后得到的序列为( )。
A、A,B,C,D,E,F,G,H
B、A,B,C,D,H,G,F,E
C、D,C,B,A,H,G,F,E
D、D,C,B,A,E,F,G,H
参考解析:栈按先进后出的原则组织数据,所以入栈最早的元素最后出栈。队列按先进先出的原则组织数据,所以入队最早的元素最先退队。入栈的顺序为A,B,C,D,则退栈的顺序为D,C,B,A﹔入队的顺序为E,F,G,H,退队的顺序为E,F,G,H。本题答案为D选项。
第2题:下列叙述中正确的是( )。
A、循环队列是队列的一种顺序存储结构
B、循环队列是队列的一种链式存储结构
c、循环队列中的队尾指针一定大于队头指针
D、循环队列中的队尾指针一定小于队头指针
参考解析:循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。在循环队列中队头指针可以大于队尾指针,也可以小于队尾指针。本题答案为A选项。
第3题:设栈与队列初始状态为空。将元素A,B,C,D,E,F,G,H依次轮流入栈和入队,然后依次轮流出栈和退队,则输出序列为()。
A、A,B,C,D,H,G,F,E
B、B,G,D,E,F,C,H,A
c、D,C,B,A,E,F,G,H
D、G,B,E,D,C,F,A,H
参考解析:栈按先进后出的原则组织数据,所以入栈最早的元素最后出栈;队列按先进先出的原则组织数据,所以入队最早的元素最先退队。将元素A,B,C,D,E,F,G,H依次轮流入栈和入队,则入栈的顺序为A,C,E,G,入队的顺序为B,D,F,H,然后依次轮流出栈和退队,则G先出栈,然后B退队,出栈的顺序为G,E,C,A,退队的顺序为B,D,F,H,输出顺序为G,B,E,D,C,F,A,H。本题答案为D选项。
第4题:设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中的元素个数为( )。
A、0
B、1
c、50
D、49
参考解析:栈的存储空间为S(1:50),初始状态为top=51,即栈的初始状态为空。当第一个元素进栈后,top=50,第二个元素进栈后,top=49,第三个元素进栈后,top=48以此类推;若第三个元素出栈后,top=48,第二个元素出栈后,top=50。即每进栈一个元素,top-1,每出栈一个元素,top+1。当top=50时,栈中只有一个元素。本题答案为B选项。
第5题:循环队列的存储空间为Q(1:50),初始状态为空。经过一系列正常的入队与退队操作后,front=24,rear=25。此时该循环队列中的元素个数为( )。
A、1
B、49
c、50
D、25
参考解析:若循环队列的存储空间为(1:m),在循环队列运转起来后,如果front<rear,则队列中的元素个数为rear-front;如果front>rear,则队列中的元素个数为rear-front+m。本题中front<rear,则队列中的元素个数为25-24=1。本题答案为A选项。
第6题:循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素退队,此时队列中的元素个数为( )。
A、24
B、49
c、26
D、0
参考解析:设循环队列的存储空间为O(1:m),当front=rear=m时,循环队列为空;当front=rear且不等于m时,循环队列可能为空,也可能为满。当为空时,可以插入元素;当为满时,插入元素会发生“上溢”错误。题目中已经说明“成功地将一个元素退队”,说明之前循环队列的状态为满,退出一个元素后,队列中还有50-1=49个元素。本题答案为B选项。
第7题:下列叙述中正确的是()。
A、在栈中,栈顶指针的动态变化决定栈中元素的个数
B、在循环队列中,队尾指针的动态变化决定队列的长度
c、在循环链表中,头指针和链尾指针的动态变化决定链表的长度
D、在线性链表中,头指针和链尾指针的动态变化决定链表的长度
参考解析∶在栈中,栈顶指针top动态反映了栈中元素的变化情况,A选项叙述正确。在循环队列中,队尾指针和队头指针的动态变化决定队列的长度,B选项叙述错误。在链式存储结构中,无论是循环链表还是线性链表,插入和删除元素时,只需要改变相应位置的结点指针即可,头指针和尾指针无法确定链表的长度,C、D选项叙述错误。本题答案为A选项。
第8题:设栈的存储空间为S(1:50),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=51,则栈中的元素个数为( )。
A、0
B、1
c、50
D、不可能
参考解析:栈的存储空间为S(1:50),初始状态为top=0,栈为空。top=1时,栈中有一个元素; top=S0时,栈满,无法再进行入栈操作,所以top不能为51。本题答案为D选项。
第9题:循环队列的存储空间为Q(1:50),初始状态为空。经过一系列正常的入队与退队操作后,front=1,rear=25。此时该循环队列中的元素个数为( )。
A、24
B、25
c、26
D、27
参考解析∶若循环队列的存储空间为(1:m),在循环队列运转起来后,如果front<rear,则队列中的元素个数为rear-front;如果front>rear,则队列中的元素个数为rear-front+m。本题中front<rear,则队列中的元素个数为25-1=24。本题答案为A选项。
第10题:设栈的存储空间为s(1m),初始状态为top=m+1。经过一系列入栈与退栈操作后,top=1。现又要将一个元素进栈,栈顶指针top值变为( )。
A、2
B、m
c、0
D、发生栈满的错误
参考解析:栈的存储空间为S(1:m),初始状态为top=m+1,即钱的初始状态为空。当第一个元素进栈后,top=m,第二个元素进栈后,top=m-1,第三个元素进栈后,top=m-2,以此类推。当top=1时,栈满,再执行进栈操作将发生栈满错误。本题答案为D选项。
第11题.设循环队列的存储空间为Q(1:100),初始状态为空。现经过一系列正常操作后,front=49,则循环队列中的元素个数为( )。
A、49
B、51
c、50
D、不确定
参考解析︰循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。队列中的元素为从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素。所以,在循环队列中队尾指针rear和排头指针front共同确定了队列中元素的个数,只知道排队指针front无法确定元素个数。本题答案为D选项。
第12题:循环队列的存储空间为Q(1:200),初始状态为front=rear=200。经过一系列正常的入队与退队操作后,front=rear=1,则循环队列中的元素个数为( )。
A、1
B、2
c、199
D、0或200
参考解析∶循环队列长度为m,初始状态为front=rear=m,此时循环队列为空。现经过一系列入队与退队运算后,front=rear且不为m,此时循环队列为队满或队空,循环队列中的元素个数为0或m。本题答案为D选项。
第13题:设栈的顺序存储空间为s(1m),初始状态为top=m+1。现经过一系列正常的入栈与退栈操作后,top=o,则栈中的元素个数为( )。
A、不可能
B、m+1
c、1
D、m
参考解析:栈的存储空间为S(1m),初始状态为top=m+1,即栈的初始状态为空。当第一个元素进栈后,top=m,第二个元素进栈后,top=m-1,第三个元素进栈后,top=m-2,以此类推。当第m个元素进栈后,top=1,此时栈满,再进行入栈操作将发生溢出,故top不可能为0。本题答案为A选项。
第14题:下列叙述中正确的是( )。
A、在循环队列中,队尾指针的动态变化决定队列的长度
B、在循环队列中,队头指针和队尾指针的动态变化决定队列的长度
c、在带链的队列中,队头指针与队尾指针的动态变化决定队列的长度
D、在带链的栈中,栈顶指针的动态变化决定栈中元素的个数
参考解析∶带链的队列和带链的栈均采用链式存储结构。链式存储的存储单元是不连续的,因为是不连续的存储空间,所以指针将不会有规律地连续变化,C、D两项错误。在循环队列中,队头指针和队尾指针的动态变化决定队列的长度,B选项正确,A选项错误。本题答案为B选项。
第15题:设栈的存储空间为S(1:60),初始状态为top=61。现经过一系列正常的入栈与退栈操作后,top=1,则栈中的元素个数为()。
A、0
B、59
c、60
D、1
参考解析∶栈的存储空间为S(1:60),初始状态为top=61,即楼的初始状态为空。当第一个元素进栈后,top=60,第二个元素进栈后,top=59,第三个元素进栈后,top=58,以此类推。当top=1时,共有60个元素入栈。本题答案为C选项。
第16题:循环队列的存储空间为Q(1:40),初始状态为front=rear=40。经过一系列正常的入队与退队操作后,front=rear=15,此后又退出一个元素,则循环队列中的元素个数为( )。
A、14
B、15
c、40
D、39,或0且产生下溢错误
参考解析:循环队列长度为40,初始状态为front=rear=40,此时循环队列为空。经过一系列入队与退队运算后,front=rear=15,此时循环队列为队满或队空。此后又正常地退出了一个元素,若循环队列为队空(0个元素),退出元素会发生“下溢”错误﹔若循环队列为队满,退出一个元素后循环队列中的元素个数为40-1=39。本题答案为D选项。
第17题:下列叙述中错误的是()。
A、若二叉树没有叶子结点,则为空二叉树
B、循环队列空的条件是队头指针与队尾指针相同
c、带链栈的栈底指针是随栈的操作而动态变化的
D、若带链队列中只有一个元素,则队头指针与队尾指针必定相同
参考解析∶在循环队列中,队头指针与队尾指针相同,即front=rear,队列可能为空也可能为满。本题答案为B选项。
第18题:设循环队列的存储空间为Q(1:50),初始状态为front=rear=50。经过一系列正常的操作后,front-1=rear。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为()。
A、0
B、1
c、48
D、49
参考解析:在循环队列运转起来后,如果front<rear,则队列中的元素个数为rear-front个;如果front>rear,则队列中的元素个数为rear-front+m。本题中,front>rear,则元素个数为rear-front+50=front-1-front+50=49。在长度为n的线性表中寻找值最大的元素,最坏情况下需要比较的次数为n-1。因此,在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为49-1=48。本题答案为C选项。
第19题:设循环队列的存储空间为Q(1:50),初始状态为?front=rear=50。经过一系列正常的操作后,front=rear-1。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为()。
A、0
B、1
c、49
D、50
参考解析∶在循环队列运转起来后,如果front<rear,则队列中的元素个数为rear-front个;如果front>rear,则队列中的元素个数为rear-front+m。本题中,front<rear,则队列中的元素个数为rear-front=rear-(rear-1)=1。在长度为n的线性表中寻找值最大的元素,最坏情况下需要比较的次数为n-1。因此,在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为1-1=0,即只有一个元素,不用比较就可确定是最大元素。本题答案为A选项。
第20题:设栈与队列初始状态为空。将元素A,B,C,D,E,F,G,H依次轮流入队和入栈,然后依次轮流退队和出栈,则输出序列为( )。
A、A,B,C,D,H,G,F,E
B、A,H,C,F,E,D,G,B
c、D,C,B,A,E,F,G,H
D、G,E,C,A,B,D,F,H
参考解析:栈按先进后出的原则组织数据,所以入栈最早的元素最后出栈;队列按先进先出的原则组织数据,所以入队最早的元素最先退队。将元素A,B,C,D,E,F,G,H依次轮流入队和入栈,则入队的顺序为A,C,E,G,入栈的顺序为B,D,F,H,然后依次轮流退队和出栈,则A选退队,然后H出栈,退队的顺序为A,C,E,G,出栈的顺序为H,F,D,B。本题答案为B选项。
第21题:设栈的顺序存储空间为S(1:m),初始状态为top=m+1,则栈中的数据元素个数为()。
A、m-top
B、top-m
c、top-m+1
D、m-top+1
参考解析:栈的顺序存储空间为S(1:m),初始状态为top=m+1,核为空。当有元素入栈时栈顶指针top-1,元素退栈时栈顶指针top+1。栈中数据元素存储在top到m的位置,则栈内数据元素个数为m-top+1。本题答案为D选项。
第22题:下列关于栈的叙述正确的是( )。
A、栈按"先进先出"组织数据
B、栈按"先进后出"组织数据
c、只能在栈底插入数据
D、不能删除数据
参考解析:栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。栈的修改原则是“后进先出”或“先进后出”,A选项叙述错误,B选项叙述正确。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底,C、D两项叙述错误。本题答案为B选项。
第23题:设栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为( )。
A、30
B、29
c、20
D、19
参考解析:初始状态为top=0,栈为空,top=1时,栈中有一个元素;top=20时,则当前栈内元素个数应为20个。本题答案为C选项。
第24题:下列与队列结构有关联的是( )。
A、函数的递归调用
B、数组元素的引用
c、多重循环的执行
D、先到先服务的作业调度
参考解析:队列又称为“先进先出”或“后进后出”的线性表,与队列结构有关联的是先到先服务的作业调度。本题答案为D选项。
第25题:下列叙述中正确的是()。
A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
c、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D、循环队列中元素的个数是由队头指针和队尾指针共同决定
参考解析∶队列是一种特殊的线性表,队列属于线性结构,循环队列是队列的一种顺序存储结构,所以循环队列属于线性结构,A选项错误。循环队列通过队头指针和队尾指针动态反映栈中元素的变化,入队时,队尾指针进1(即rear+1)﹔退队时,队头指针进1(即front+1),B、C两项错误。在循环队列中,从队头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,D选项正确。本题答案为D选项。
第26题,设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为( )。
A、30
B、29
c、20
D、19
参考解析:栈的顺序存储空间为S(0:49),栈底指针bottom=49,指向找底的元素,当栈顶指针top=30时,栈内元素存储在30:49的空间(包括30和49),则元素个数为49-30+1=20。本题答案为C选项。
第27题:循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素入队,此时队列中的元素个数为( )。
A、1
B、50
c、26
D、2
参考解析∶设循环队列的存储空间为Q(1:m),当front=rear=m时,循环队列为空;当front=rear且不等于m时,循环队列可能为空,也可能为满。当为空时,可以插入元素;当为满时,插入元素会发生“上溢”错误。题目中已经说明“成功地将一个元素入队”,说明之前循环队列的状态为空,插入一个元素后,队列中共有1个元素。本题答案为A选项。