《(全)2024数据结构考试内部题库含答案解析(全考点).docx》由会员分享,可在线阅读,更多相关《(全)2024数据结构考试内部题库含答案解析(全考点).docx(15页珍藏版)》请在第壹文秘上搜索。
1、数据结构考试内部题库含答案解析(全考点)1、若用数组A05来实现循环队列,且当前rear和front的值分别为1和5,当从队列中删除一个元素,再加上两个元素后,rear和front的值分别为()。.A:3和4.B:3和0.C:5和0.D:5和1解析循环队列中,每删除一个元素,队首指针front=(frontl)%6,每插入一个元素,队尾指针rear=(rear+l)%6o上述操作后Jront=Ozrear=3o答案:B2、在一个链队列中,假设队头指针为front,队尾指针为rear,x所指向的元素需要入队,则需要执行的操作为()。.A:front=xzfront=front-next B:X-
2、next=front-next,frot=x C:rear-next=x,rear=x.D:rear-next=xzx-next=null,rear=x解析插入操作时,先将结点X插入到链表尾部,再让rear指向这个结点X0C的做法不够严密,因为是队尾,所以队尾x-next必须置为空。答案:D3、若以1,2,3,4作为双端队列的输入序列,则既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列是()。.A:1,2,3,4.B:4,1,3,2.C:4,2,3,1D:4,2,1,3解析使用排除法。先看可由输入受限的双端队列产生的序列:设右端输入受限,1,2,3,4依次左入,则依次左
3、出可得4,3,2,1,排除A;右出、左出、右出、右出可得到4,1,3,2,排除B;再看可由输出受限的双端队列产生的序列:设右端输出受限,1,2,3,4依次左入、左入、右入、左入,依次左出可得到4,2,1,3,排除D0答案:C4、已知循环队列存储在一维数组AO.n-l中,目队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在A0处,则初始时front和rear的值分别是()。 A:0,0.B:0,n-1 C:n-1,0.D:n-1,n-1解析根据题意,第一个元素进入队列后存储在A0处,此时front和rear值都为Oo入队时由于要执行(re
4、ar+1)%n操作,所以若入队后指针指向0,则rear初值为n-1,而由于第一个元素在A0中,插入操作只改变rear指针,所以front为0不变。答案:B5、循环队列放在一维数组A0Ml中,endl指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-I个元素。初始时为空。下列判断队空和队满的条件中,正确的是()。A:队空:endl=end2;队满:endl=(end2l)modMB:队空:endl=end2;队满:end2=(endl+l)mod(M-I).C:队空:end2=(endl+l)modM;队满:endl=(end2+l)modM
5、.D:队空:endl=(end2+l)modM;队满:end2=(endl+l)mod(M-I)解析endl指向队头元素,可知出队操作是先从Aendl读数,然后endl再加loend2指向队尾元素的后一个位置,可知入队操作是先存数到Aend2,然后end2再加L若用A0存储第一个元素,队列初始时,入队操作是先把数据放到A0中,然后end2自增,即可知end2初值为0;而endl指向的是队头元素,队头元素在数组A中的下标为0,所以得知endl的初值也为O,可知队空条件为endl=end2;然后考虑队列满时,因为队列最多能容纳M-I个元素,假设队列存储在下标为O到M-2的M-I个区域,队头为A0,
6、队尾为AM-2l此时队列满,考虑在这种情况下endl和end2的状态,endl指向队头元素,可知endl=0,end2指向队尾元素的后一个位置,可知end2=M-2l=M-l,所以队满的条件为endl=(end2+l)modMo答案;A6、执行()操作时,需要使用队列作为辅助存储空间。 A:查找散列(哈希)表 B:广度优先搜索图 C:前序(根)遍历二叉树 D:深度优先搜索图解析图的广度优先搜索类似于树的层序遍历,都要借助于队列。答案:B7.串ababaaababaa的nextval数组为()oA:0,1,0,1,1,2,O,1,0,1,0,2 B:0,1,0,1,1,4,1,1,O,1,0,2
7、.C:0,1,0,1,0,4,2,1,0,1,0,4 D:0,1,1,1,0,2,1,1,O,1,0,4解析nextval从0开始,可知串的位序从1开始。第一步令nextvall=next1=Oo从j=2开始,依次判断口是否等于口?若是则将next(j修正为nextnextj,直至两者不相等为止。答案:C8、一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是()。.A:41.B:82 C:113 D:122设树中度为i(i=0,L2,3,4)的结点数分别为匚I,树中结点总数为n,则n=分支数+1,而分支数又等于树中各结点的
8、度之和,即n=l+口+2口+3口+4口=+Q依题意,0+20+30+4=10+2+30+80=122,口+口+口+口=10+1+10+20=41,可得出I_1=82,即树T的叶结点的个数是820答案:B1、已知表头元素为c的单链表在内存中的存储状态如下表所示。现将f存放于1014H处并插入单链表,若f在逻辑上位于a和e之间,则afe,f的“链接地址”依次是()。在这里插入图片描述 A:IOlOH,1014H,1004H B:IOlOH,1004H,1014H C:1014H,IOlOH,1004HD:1014H,1OO4H,IOlOH解析答案:D2、已知头指针h指向一个带头结点的非空单循环链表
9、,结点结构为下图,其中next是指向直接后继结点的指针,p是尾指针,q是临时指针。现要删除该链表的第一个元素,正确的语句序列是()。在这里插入图片描述.A:h-next=h-next-next;q=h-next;free(q);.B:q=h-next;h-next=h-next-next;free(q);.C:q=h-next;h-next=q-next;if(p!=q)p=h;free(q);.D:q=h-next;h-next=q-next;if(p=q)p=h;free(q);解析在这里插入图片描述如图1所示,要删除带头结点的非空单循环链表中的第一个元素,就要先用临时指针q指向待删结点,
10、q=h-next;然后将q从链表中断开,h-next=q-next(这一步也可写成h-next=h-next-next);此时要考虑一种特殊情况,若待删结点是链表的尾结点,即循环单链表中只有一个元素(P和q指向同一个结点),如图2所示,则在删除后要将尾指针指向头结点,即if(p=q)p=h;最后释放q结点即可。答案:D3、栈和队列具有相同的()。 A:抽象数据类型.B:逻辑结构.C:存储结构 D:运算解析栈和队列的逻辑结构都是相同的,都属于线性结构,只是它们对数据的运算不同。答案:B4、设链表不带头结点且所有操作均在表头进行,则下列最不适合作为链栈的是()。 A:只有表头结点指针,没有表尾指针
11、的双向循环链表 B:只有表尾结点指针,没有表头指针的双向循环链表 C:只有表头结点指针,没有表尾指针的单向循环链表 D:只有表尾结点指针,没有表头指针的单向循环链表解析对于双向循环链表,不管是表头指针还是表尾指针,都可以很方便地找到表头结点,方便在表头做插入或删除操作。而单循环链表通过尾指针可以很方便地找到头结点,但通过头指针找尾结点则需要遍历一次链表。对于C,插入和删除结点后,找尾结点需要花费0(n)的时间。答案:C5、向一个栈顶指针为top的链栈(不带头结点)中插入一个X结点,则执行()。.A:top-next=x; B:x-next=top-next;top-next=x C:x-nex
12、t=top;top=x D:x-next=top;top=top-next解析链表采用不带头结点的单链表表示时,进栈操作在首部插入一个结点x(即x-next=top),插入完后需将top指向该插入的结点Xo答案:C6、一个栈的输入序列为1,2,3,n,输出序列的第一个元素是i,则第j个输出元素是()。.A:i-j-1.B:i-j.C:j-i+1D:不确定解析当第i个元素第一个出栈时,则i之前的元素可以依次排在i之后出栈,但剩余的元素可以在此时进栈并且也会排在i之前的元素出栈,所以第j个出栈的元素是不确定的。答案:D7.已知一个栈的入栈序列是1,2,3,4,其出栈序列为,则III不可能是()o.
13、A:2z4.B:2,1.C:4,3.D:3,4解析逐个判断每个选项可能的入栈出栈顺序。答案:C8、一个栈的入栈序列为1,2,3,n,出栈序列门,口口,口若=3,则可能取值的个数是()。 A:n-3 B:n-2 C:n-1 D:无法确定3之后的4,5.,n都是口可取的数(持续进栈直到该数入栈后立即出栈)O接下来分析1和2:口可以是3之前入栈的数(可能是1或2),也可以是4,当=1时,可取2;当=2时,口可取1;当1=4时,匚后取除1,3,4之外的所有数;故匚可能取值的个数为11-lo答案:C9、下列关于栈的叙述中,错误的是()0I.采用非递归方式重写递归程序时必须使用栈11.函数调用时,系统要用
14、栈保存必要的信息m.只要确定了入栈次序,即可确定出栈次序IV.栈是一种受限的线性表,允许在其两端进行操作 A:仅I.B:仅I、口、m C:仅I、印、IV D:仅口、田、IVI的反例:计算斐波拉契数列迭代实现只需要一个循环即可实现。11I的反例:入栈序列为1,2,进行Push#PushxPopxPop操作,出栈次序为2,1;进行Push,Pop,Push,Pop操作,出栈次序为1,2.IV的反例:栈是一种受限的线性表,只允许在一端进行操作。答案:C10、队列的“先进先出特性是指()。I.最后插入队列中的元素总是最后被删除11.当同时进行插入、删除操作时,总是插入操作优先m.每当有删除操作时,总要先做一次插入操作IV.每次从队列中删除的总是最早插入的元素.A:I.B:I和IV C:II和IH.D:IV解析队列先进先出的特性表现在:先进队列的元素先出队列,后进队列的元素后出队列,进队列对应的是插入操作,出队列对应的是删除操作。I和IV均正确。答案:B