1.1 顺序存储结构的存储结构和实现一、选择题 1.选择题题目部分 ● 线性表是具有n个 (1) 的有限序列(n>0
二、综合应用题
1.综合应用题题目部分
● 习题1:设顺序表va中的数据元素递增有序,试编写一个算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
● 习题2:试写一个算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…,an)逆置为(an,an-1,…,a1)。
● 习题3:已知长度为n的线性表A采用顺序存储结构,请编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。(O(1)表示算法的辅助空间为常量)。
● 习题4:顺序存储的线性表A,其数据元素为整型,试编写一个算法,将表A拆成B和C两个表,使表A中元素值大于等于0的元素放入B,小于0的元素放入C中,要求:
(1)表B和C另外设置存储空间;
(2)表B和C不另外设置,而利用表A的空间。
● 习题5:已知A、B、C为3个递增有序的线性表,现要求对表A做如下操作:删去那些既在表B又在表C中出现的元素。试对顺序表编写实现上述操作的算法。
2.综合应用题的答案与分析
若无明确说明,综合应用题中涉及的线性表顺序存储结构,假定其数据结构均为:
习题1分析:
这道题目考查线性表顺序存储结构的插入操作,这里的重点是如何找到元素x应该插入的位置。要注意题中给出的已知条件为数据元素有序递增,利用这一已知条件,对线性表顺序存储结构的插入操作稍做修改即可得出相应的算法。
算法的基本思想是:从表的最后一个元素开始,从后往前进行扫描,若该元素值大于等于x,则将该元素后移一位,这样就可找到元素x应该插入的位置。该题的算法如下:
习题2分析:
这一题的特色在于在实现原表的逆置时,需要利用原表的存储空间。实现方法也比较简单,即将原表的第一个元素和最后一个元素相交换,第二个元素和倒数第二个元素相交换……依此类推,直到最后一个元素。
习题3分析:
该题目考查对线性表删除操作的理解,一般情况下,对线性表的元素进行删除操作时,都涉及了元素移动的问题,因此,在线性表中删除一个元素的时间复杂度为O(n)。
在本题中,要删除表中所有值为item的元素,即对表中的每个元素都要进行一次扫描,且时间复杂度必须为O(n),此时必然不能进行元素移动的操作,而只能用另外的元素来替换被删除的元素。这里可以考虑两种情况:一种是不考虑元素的相对顺序,即被删除后的线性表中的元素的相对位置可以发生变化;另一种是被删除后元素的相对位置不变。
考虑相对位置可以发生变化的情况,在一趟扫描过程中,若找到值为item的元素,则用表中的最后一个元素替换。其算法如下:
删除操作后其余元素的相对位置不变的情况应如何考虑呢?请读者自己思考并写出相应的算法。
习题4分析:
本题依旧考查对线性表基本操作的理解。将表A拆分成表B和表C,若表B和表C不利用原来的存储空间,则此题比较简单。可以对表A的所有元素依次进行扫描,若元素值大于等于0,则将该元素放入线性表B;若元素值小于0,则将其放入线性表C。算法如下:
若将表A拆分成表B和表C时,需要利用原有的存储空间,此时又该如何考虑呢?事实上,此时就是对表A重新进行排序,且将所有小于0的元素放在表A的前半部分,而所有大于等于0的元素放在表A的后半部分。此时可采用快速排序的思想,但枢轴记录的值并不作为元素比较的标准,而是用元素值是否为负数作为比较的标准,只需一趟快速排序即可完成本题的要求。其算法如下:
作为对本题的扩展,若线性表中有负数、零和正数3种类型,并按照负数、零、正数的顺序重排线性表时应该如何处理呢?请读者自己思考并写出相应的算法。
习题5分析:
本题考查对于线性表操作的综合运用。本题的前提条件依旧是3个线性表递增有序,要完成题目的要求,必须首先依次找出在表B和表C中同时出现的元素值,再将表A中的该元素删除。要特别注意的是,在本题目中没有特别指明表中的元素值各不相同,因此这里要考虑表A中有连续多个要被删除元素的情况。
3.训练自测表(如表1-2所示)
表1-2 应用题练习自测表
题 号 |
考 查 点 |
得 分 |
(1) | 顺序存储结构的插入操作 | |
(2) | 顺序存储结构的就地逆置 | |
(3) | 顺序存储结构的删除操作 | |
(4) | 顺序存储结构的合并 | |
(5) | 顺序存储结构中特定元素的删除操作 |
关于"最后阶段,真题的正确打开方式_备考经验_考研帮"有15名研友在考研帮APP发表了观点
扫我下载考研帮
最新资料下载
2021考研热门话题进入论坛
考研帮地方站更多
你可能会关心:
来考研帮提升效率