第04讲 线性表的顺序表示 课堂互动 隐藏答案 | 返回首页

作者:欧新宇(Xinyu OU)

最后更新:2023-09-13


【课前自测04】

1.(单选)已知顺序表中的每个元素占2个存储单元,如果第1个元素存储地址为100,则第6个元素的存储地址是()。
A. 110
B. 112
C. 114
D. 116

答案及解析:A
第6个元素的存储地址为100 + 5×2 + 1 = 110

2.(单选)线性表的顺序存储结构的特点是()。
A. 插入和删除操作需要移动大量元素
B. 插入和删除操作需要移动少量元素
C. 插入和删除操作需要移动全部元素
D. 插入和删除操作需要移动部分元素

答案及解析:A
在顺序存储结构中,插入和删除操作需要从插入或删除点开始将后续的元素进行统一地向后或向前移动。因此,在线性表的顺序存储结构中,插入和删除操作需要移动大量元素。


3.(单选)顺序存储方式只能用于存储线性结构。
A. 正确
B. 错误

答案及解析:B


4.(单选)取顺序线性表的第i个元素的时间同i的大小有关。
A. 正确
B. 错误

答案及解析:B
在顺序线性表中进行取值时,可以通过i的值做为下标来唯一索引确定第i个元素,因此时间复杂度为O(1)。


5. ‏关于线性表的正确说法是( )。
A. 每个元素都有一个前驱和一个后继元素
B. 线性表中至少有一个元素
C. 表中元素的排序顺序必须是由小到大或由大到小
D. 除第一个元素和最后一个元素外,其余每个元素有且仅有一个前驱和一个后继元素

答案及解析:D
线性表属典型的线性结构。

【课堂互动4.1】顺序表的定义

1. 下述()是顺序存储结构的优点。
A. 存储密度大
B. 插入运算方便
C. 删除运算方便
D. 方便地运用于各种逻辑结构的存储表示

答案及解析:A
顺序表不像链表那样要在结点中存放指针域,因此存储密度较大,A正确。B和C是链表的优点。D是错误的,比如对于树形结构,顺序表显然不如链表表示起来方便

2. 线性表的顺序存储结构是一种()。
A. 随机存取的存储结构
B. 顺序存取的存储结构
C. 索引存取的存储结构
D. 散列存取的存储结构

答案及解析:A
本题易误选B。注意,存取方式是指读写方式。顺序表是一种支持随机存取的存储结构,根据起始地址加上元素符号,可以很方便地访问任意一个元素,这就是随机存取的概念。

3. 一个顺序表所占用的存储空间大小与()无关。
A. 表的长度
B. 元素的存放顺序
C. 元素的类型
D. 元素中各字段的类型

答案及解析:B
顺序表所占的存储空间 = 表长×sizeof(元素类型),表长和元素的类型显然会影响存储空间的大小,。若元素为结构体类型,则元素中各自段的类型也会影响存储空间大小。

4.(单选)已知顺序表中的每个元素占7个存储单元,如果第1个元素存储地址为213,则第5个元素的存储地址是()。
A. 29
B. 35
C. 241
D. 242

答案及解析:C
第5个元素的存储地址为213 + 7×4 = 241,其所占的存储空间范围是241~247。注意,若该链表存在一个头结点,并且头结点的占用1个存储空间的话,那么第5个元素的存储地址就变为213 + 7×4 + 1 = 242。

5. 对于顺序表来说,以下描述正确的是()。
A. 数据元素在逻辑上是相邻的,其物理位置也是相邻
B. 数据元素在逻辑上是相邻的,但其物理位置不一定相邻
C. 数据元素在逻辑上不相邻,但其物理位置是相邻的
D. 数据元素在逻辑上不相邻,其物理位置也不相邻

答案及解析:A
以顺序存储保存的线性表在逻辑上相邻的数据元素,其物理位置也相邻。

【课堂互动4.2】顺序表的基本操作

1.(单选)在顺序结构表示的线性表中,删除第i个元素(数组下标为i-1),需要把后面的所有元素都往前挪一位,相应的语句是:()。

for (___________ )
    PtrL -> Data[j-1] = PtrL -> Data[j];

其中空缺的部分是:

A. j = i; j <= PtrL -> Last; j++
B. j = PtrL -> Last; j>= i; j--
C. j = i-1; j< = PtrL -> Last; j++
D. j = PtrL -> Last; j >= i-1; j--

答案及解析:A
在本题中,变量PtrL是一个指针,当其指向线性表中的第i个元素时,其在数组中的下标为i-1。为例删除第i个元素,需要将第i个到最后一个元素(PtrL -> Last)都往前挪一位。此时只需要从第i个元素(下标为i-1)开始将其next指针指向第i+1个元素(下标为i),就可以将第i个元素删除。后续元素按照同样的方式进行指针修改。


2.(单选)在 nn 个元素的线性表的数组表示中,时间复杂度为O(1)的操作是()。
I. 访问第i个结点和求第i个结点的直接前驱
II. 在最后一个结点后插入一个新结点
III. 删除第1个结点
IV. 在第i个结点后插入一个新结点

A. I
B. II、III
C. I、II
D. I、II、III

答案及解析:C
I中,可以使用数组下标进行访问,时间复杂度为O(1);II中,在最后位置插入新结点不需要移动元素,时间复杂度为O(1);III中,被删除结点后的结点需依次前移,时间复杂度为O(n);IV中,需要后移n-i个结点,时间复杂度为O(n)。

3.(单选)设线性表有 nn 个元素,严格说来,以下操作中,()在线性表上实现要比在链表上实现的效率高。
I. 输出第 i 个元素值
II. 交换第 3 个元素与第 4 个元素的值
III. 顺序输出这 n 个元素的值

A. I
B. I、III
C. I、II
D. II、III

答案及解析:C
在第I和第II中,顺序表可以直接使用数组的下标进行访问,其时间复杂度为O(1) ;而链表需要先找到第i个元素,此时需要遍历第0-i的所有元素,其复杂度为O(n)。在第III中,顺序输出意味着从第0个元素开始,遍历所有元素,此时两种存储方式的访问时间是相同的,都是O(n)。

4.(单选)在一个长度为 nn 的顺序表中删除第 i 个元素时,需向前移动()个元素。
A. n
B. i-1
C. n-i
D. n-i+1

答案及解析:C
需要将 ai+1ana_{i+1} \sim a_n 元素依次前移一位,共移动 n(i+1)+1=nin-(i+1)+1 = n-i 个元素。

5.(单选)对于顺序表,访问第 ii 个位置的元素和在第 ii 个位置插入一个元素的时间复杂度为()。
A. O(n), O(n)
B. O(n), O(1)
C. O(1), O(n)
D. O(1), O(1)

答案及解析:C
在第 ii 个位置插入一个元素,需要移动 ni+1n-i+1 个元素,时间复杂度为O(n)。

6.(单选)在顺序表的插入算法中,当 nn 个空间已满时,可以再申请增加分配 mm 个空间,若申请失败,则说明系统没有()可以分配的存储空间。
A. m 个
B. m 个连续的
C. n+m 个
D. n+m 个连续的

答案及解析:D
顺序存储需要连续的存储空间,在申请时需申请n+m个连续的存储空间,然后将线性表原来的n个元素复制到新申请的n+m个连续的存储空间的前n个单元。

【扩展练习04】

1.(单选)‏顺序表具有随机存取特性,指的是( )。
A. 查找值为x的元素与顺序表中元素个数n无关
B. 查找值为x的元素与顺序表中元素个数n有关
C. 查找序号为i的元素与顺序表中元素个数n无关
D. 查找序号为i的元素与顺序表中元素个数n有关

答案及解析:C
一种存储结构具有随机存取特性指的是,对于给定的序号i,在O(1)时间内找到对应元素值。

2.(单选)在顺序表中删除一个元素所需要的时间( )。
A. 与删除元素的位置及顺序表的长度都有关
B. 只与删除元素的位置有关
C. 与删除任何其他元素所需要的时间相等
D. 只与顺序表的长度有关

答案及解析:A
当从顺序表中删除元素时,为了保持顺序表的逻辑特性,需要移动元素以覆盖该删除的元素。因此在顺序表中删除一个元素与该元素的位置及顺序表的长度都有关。

‍3.(单选)在 n(n>1) 个运算的顺序表中,算法时间复杂度为O(1)的运算是( )。
A. 访问第i个元素(2≤i≤n)并求其前驱元素
B. 在第i个元素之后插入一个新元素
C. 删除第i个元素
D. 将这n个元素递增排序

答案及解析:A
访问第i个元素(2≤i≤n)即 L->data[i-1] 和求其前驱元素 L->data[i-2] 的时间复杂度均为O(1)。

4.(单选)‎一个线性表最常用的操作是存取任意一个指定序号的元素并在最后进行插入、删除操作,则利用( )存方式可以节省空间。
A. 顺序表
B. 双链表
C. 带头结点的双循环链表
D. 单循环链表

答案及解析:A
只有顺序表可以按序号随机存取,且在最后进行插入和删除操作时不需要移动任何元素。

5. 若线性表最常用的操作是存取第 ii 个元素及其前驱和后继元素的值,为了提高效率采用()的存取方式。
A. 单链表
B. 双向链表
C. 单循环链表
D. 顺序表

答案及解析:D
题干要求能最快存取i-1、i和i+1个元素值。A、B、C都只能从头结点依次顺序查找,时间复杂度为O(n);只有顺序表可以按序号随机存取,时间复杂度为O(1)。

6.(单选)‎以下关于顺序表的叙述中,正确的是( )。
A. 顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用
B. 在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻
C. 顺序表和一维数组一样,都可以进行随机存取
D. 在顺序表中每一个元素的类型不必相同

答案及解析:C
顺序表中所有元素必须连续存放,而一维数组中所有元素可以不连续存放,另外,一维数组只有按下标的存、取两个操作,而顺序表可以进行线性表的插入、删除等操作,所以选项A错误。在顺序表中,逻辑上相邻的元素在物理位置上也一定相邻,所以选项B错误。顺序表中每一个元素的类型必须相同,所以选项D错误。

7.(单选)‎以下属于顺序表的优点是( )。
A. 插入元素方便
B. 删除元素方便
C. 存储密度大
D. 以上都不对

答案及解析:C
顺序表的存储密度为1,所以其存储密度大。

8.(单选)顺序表的存储密度()。
A. 小于1
B. 等于1
C. 大于1
D. 不能确定

答案及解析:B
顺序表可以直接用下标来标识元素,而不用为表示结点间的逻辑关系增加额外的存储空间,因此其存储密度为1.

第04讲 线性表的顺序表示 课堂互动 隐藏答案 | 返回首页