25版王道数据结构课后习题详细分析 第三章栈、队列和数组 3.1 栈 选择题部分

一、单项选择题

————————————————————

————————————————————

解析:栈和队列的逻辑结构都是相同的,都属于线性结构,只是它们对数据的运算不同。

正确答案:B

————————————————————

————————————————————

解析:

限制存取点的线性结构指的是数据结构中,数据的存取操作受到限制,只能在特定的位置(如栈的顶部或队列的头部尾部)进行插入和删除操作的数据结构。

首先栈是一种线性表,所以B、D错。按存储结构的不同可分为顺序栈和链栈,但不可以把栈局限在某种存储结构上,所以A错。栈和队列都是限制存取点的线性结构。

正确答案:C

————————————————————

————————————————————

解析:基本操作是指该结构最核心、最基本的运算,其他较复杂的操作可通过基本操作实现。删除栈底元素不属于栈的基本运算,但它可以通过调用栈的基本运算求得。

正确答案:B

————————————————————

————————————————————

解析:数组下标范围为0~n-1,初始时top为1,第一个元素入栈后,top为0,即top指向栈顶元素。栈向高地址方向增长,所以入栈时应先将指针top加1,然后存入元素x,C正确。

正确答案:C

————————————————————

————————————————————

解析:数组下标范围为1~n,初始时top为1,表示top指向栈顶元素的下一个元素。栈向高地址方向增长,所以入栈时应先存入元素x,然后将指针top加1,B正确。

正确答案:B

————————————————————

————————————————————

解析:数组下标范围为1~n,初始时top为n+1,表示top指向栈顶元素。栈向低地址方向增长,所以入栈时应先将指针top 减1,然后存入元素x,A正确。

正确答案:A

————————————————————

————————————————————

解析:每个元素需要1个存储单元,所以每入栈一次top加1,出栈一次top减1。指针top的值依次为1001H,1002H,1001H,1002H,1001H,1002H,1001H,1002H。

正确答案:A

————————————————————

————————————————————

解析:顺序栈采用数组存储,数组的大小是固定的,不能动态地分配大小。和顺序栈相比,链栈的最大优势在于它可以动态地分配存储空间。

正确答案:A

————————————————————

————————————————————

解析:

单循环链表进行删除插入操作时还需更新表尾结点。

对于双向循环链表,不管是表头指针还是表尾指针,都可以很方便地找到表头结点,方便在表头做插入或删除操作。而单循环链表通过尾指针可以很方便地找到表头结点,但通过头指针找尾结点需要遍历一次链表。对于C,插入和删除结点后,找尾结点所需的时间为O(n)。

正确答案:C

————————————————————

————————————————————

解析:链栈采用不带头结点的单链表表示时,进栈操作在首部插入一个结点x(即x->next=top),插入完后需将top 指向该插入的结点x。请思考当链栈存在头结点时的情况。

正确答案:C

————————————————————

————————————————————

解析:这里假设栈顶指针指向的是栈顶元素,所以选D;而A中首先将top指针赋给了x,错误;B中没有修改top指针的值;C为top指针指向栈顶元素的上一个元素时的答案。

正确答案:D

————————————————————

————————————————————

解析:执行前3句后,栈st内的值为a, b,其中b为栈顶元素;执行第4句后,栈顶元素b出栈,×的值为b:执行最后一句,读取栈顶元素的值,x的值为a。

正确答案:A

————————————————————

————————————————————

解析:考题中给出的n值不会很大,可以根据栈的特点,若X已经出栈,则X前面的尚未出栈的元素一定逆置有序地出栈,因此可采用例举方法。如 a, b, c依次进栈的出栈序列有abc, acb, bac,bca, cba。另外,在一些考题中可能会问符合某个特定条件的出栈序列有多少种,比如此题中的问以b开头的出栈序列有几种,这种类型的题目一般都使用穷举法。

正确答案:B

————————————————————

————————————————————

解析:根据栈“先进后出”的特点,且在进栈操作的同时允许出栈操作,显然答案D中c最先出栈,则此时栈内必定为α和b,但因为α先于b进栈,所以要晚出栈。对于某个出栈的元素,在它之前进栈却晚出栈的元素必定是按逆序出栈的,其余答案均是可能出现的情况。

正确答案:D

————————————————————

————————————————————

解析:假设出栈序列为cd....分析栈的操作序列: α进栈,b进栈,c进栈,c出栈,d进栈,d出栈,此后只能是b出栈和α出栈一种情况,因此出栈序列只有cdba。

正确答案:A

————————————————————

————————————————————

解析:采用排除法,选项A,B,C得到的出栈序列分别为1243,3241,1324。由1234得到1342的进出栈序列为:1进,1出,2进,3进,3出,4进,4出,2出,所以选D。

正确答案:D

————————————————————

————————————————————

解析:采用排除法,选项A,B,C得到的出栈序列分别为1243,3241,1324。由1234得到1342的进出栈序列为:1进,1出,2进,3进,3出,4进,4出,2出,所以选D。

正确答案:D

————————————————————

————————————————————

解析:采用排除法,选项A,B,C得到的出栈序列分别为1243,3241,1324。由1234得到1342的进出栈序列为:1进,1出,2进,3进,3出,4进,4出,2出,所以选D。

正确答案:D

————————————————————

————————————————————

解析:对于A,可能的顺序是a入,a出,b入,b出,c入,c出,d入,d出。对于B,可能的顺序是a入,b入,c入,c出,b出,d入,d出,a出。对于D,可能的顺序是a入,a出,b入,c入,c出,b出,d 入,d 出。C没有对应的序列。

正确答案:C

————————————————————

————————————————————

解析:入栈序列是P1,P2,…,Pn。由于 P3= 1,即P1,P2,P3连续入栈后,第一个出栈元素是P3,说明P1, P2已经按序进栈,根据先进后出的特点可知,P2必定在P1之前出栈,而第二个出栈元素是2,而此时P1不是栈顶元素,因此P1的值不可能是2。

正确答案:C

————————————————————

————————————————————

解析:假设P1是1,进栈后立即出栈,P2是2,进栈后立即出栈,P3是3,进栈后立即出栈,得到的序列符合题意。假设P1是2,P2是1,P1、P2,依次进栈后全部出战,P3是3,进栈后立即出栈,得到的序列符合题意。因此,P1既可能是1,又可能是2。
正确答案:A

————————————————————

————————————————————

解析:

正确答案:C

————————————————————

————————————————————

解析:

正确答案:C

————————————————————

————————————————————

解析:上溢是指存储器满,还往里写;下溢是指存储器空,还往外读。为了解决上溢,可给栈分配很大的存储空间,但这样又会造成存储空间的浪费。共享栈的提出就是为了在解决上溢的基础上节省存储空间,将两个栈放在同一段更大的存储空间内,这样,当一个栈的元素增加时,可使用另一个栈的空闲空间,从而降低发生上溢的可能性。

正确答案:B

————————————————————

————————————————————

解析:

正确答案:A

————————————————————

————————————————————

解析:

正确答案:C

————————————————————

————————————————————

解析:选项A由a进,b进,c进,d进,d出,c出,e进,e出,b出,f进,f出,a出得到;选项B由a进,b进,c进,c出,b出,d进,d出,a出,e进,e出,f进,f出得到;选项C由a进,b进,b出,c进,c出,a出,d进,e进,e出,f进,f出,d出得到;选项D由a进,a出,b进,c进,d进,e进,f进,f出,e出,d出,c出,b出得到,但题意要求不允许连续3次退栈操作,选项D不符。

正确答案:D

————————————————————

————————————————————

解析:d第一个出栈,则c, b, a出栈的相对顺序是确定的,出栈顺序必为d_c_b_a_,e的顺序不定,在任意一个“_”上都有可能。

正确答案:B

————————————————————

————————————————————

解析:显然,3之后的4,5,…, n都是P可取的数(一直进栈直到该数入栈后马上出栈)。接下来分析1和2是否可取:P可以是3之前入栈的数(可能是1或2),也可以是4,当P=1时,P3可取2;当P=2时,P;可取1。因此,ps可能取除3外的所有数,个数为n-1。

正确答案:C

————————————————————

————————————————————

解析:

正确答案:D

————————————————————

————————————————————

解析:通过模拟出入栈操作,可以判断入栈序列in和出栈序列out是否合法。因此。己知in序列可以判断out序列是否为可能的出栈序列;已知out序列也可以判断in序列是否为可能的入栈序列,A和B错误。若每个元素入伐后立即出栈,则in序列和out序列相同,C错误。若所有元素都入栈后才依次出栈,则in序列和out序列互为倒序,D正确。

正确答案:D

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
王道数据结构课后习题中,有一个关于排序的题目。根据引用的思路,我们可以使用排序后查找的方法来解决这个问题。具体步骤如下: 1. 首先,对给定的数据进行排序,可以使用快速排序、归并排序等常见的排序算法进行排序。排序的时间复杂度为O(log2n)。 2. 排序完成后,我们可以使用二分查找的方法来查找特定元素。如果目标元素存在于排序后的数组中,可以通过遍历判断其是否存在。时间复杂度为O(log2n)。 所以,根据引用的思路,我们可以使用排序后查找的方法来解决王道数据结构课后习题中排序的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [leetcode答案-kaoyan-data-structure:21考研,用的去年的书《2020王道数据结构》](https://download.csdn.net/download/weixin_38733733/19920375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [王道数据结构课后题编程(顺序表)](https://blog.csdn.net/RHJlife/article/details/90450834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值