全国计算机等级考试《二级C语言程序设计》专用教材【考纲分析+考点精讲+真题演练+强化习题】
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 线性表及其顺序存储结构

【考点1】线性表的基本概念

(1)线性表是一种最常见最简单的数据结构,由一组数据元素构成。数据元素在线性表中的位置值只取决于它们自己的序号,即数据元素之间的相对位置是线性的。

(2)非空线性表的结构特征:

有且只有一个根结点a1,它无前件;

有且只有一个终端结点an,它无后件;

除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

【说明】

线性表中结点的个数n称为线性表的长度。

当n=0时,称为空表。

【真题演练】

下列叙述中正确的是(  )。[2014年9月真题]

A.结点中具有两个指针域的链表一定是二叉链表

B.结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构

C.二叉树只能采用链式存储结构

D.循环链表是非线性结构

【答案】B

【解析】A项错误,具有两个指针域的链表可能是双向链表,也可能是二叉链表,其中双向链表是线性结构,二叉树为非线性结构;B项正确,如双向链表是线性结构,二叉树为非线性结构,两者结点中均有两个指针域;C项错误,二叉树通常采用链式存储结构,也可采用其他结构;D项错误,循环链表是线性结构,逻辑概念线性非线性与实际存储结构无关。答案选择B选项。

【考点2】线性表的顺序存储结构

(1)概述

顺序存储是一种最简单的在计算机中存放线性表的方法,也称顺序分配。

(2)特点

线性表中所有元素所占的存储空间是连续的;

线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。

(3)运算

在线性表的顺序存储结构下,可对线性表进行以下运算:

插入:在线性表的指定位置处加入一个新的元素;

删除:在线性表中删除指定的元素;

查找:在线性表中查找某个(或某些)特定的元素;

排序:对线性表中的元素进行整序;

分解:按要求将一个线性表分解成多个线性表;

合并:按要求将多个线性表合并成一个线性表;

复制:复制一个线性表;

逆转:逆转一个线性表等。

【真题演练】

在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数(  )。[2014年3月真题]

A.相同,元素的存储顺序与逻辑顺序一致

B.相同,但其元素的存储顺序可以与逻辑顺序不一致

C.不同,但元素的存储顺序与逻辑顺序一致

D.不同,且其元素的存储顺序可以与逻辑顺序不一致

【答案】A

【解析】在顺序表中,每个元素占有相同的存储单元。顺序表具有特征:线性表中所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。答案选择A选项。

【考点3】顺序表的插入运算

假设线性表的存储空间为V(1:m),线性表的长度为n(n≤m),插入的位置为i(表示在第i个位置插入元素),则顺序表插入新元素过程如下:

(1)首先处理以下三种异常情况:

当存储空间已满(即n=m)时为“上溢”错误,不能进行插入,算法结束;

当i>n时,认为在最后一个元素之后(即第n+1个元素之前)插入;

当i<1时,认为在第1个元素之前插入。

(2)从最后一个元素开始,直到第i个元素,其中每一个元素均往后移动一个位置。

(3)最后将新元素插入到第i个位置,并且将线性表的长度增加1。

【考点4】顺序表的删除运算

假设线性表的存储空间为V(1:m),线性表的长度为n(n≤m),删除的位置为i(表示删除第i个元素),则顺序表删除元素的过程如下:

(1)首先处理以下两种异常情况:

当线性表为空(即n=0)时为“下溢”错误,不能进行删除,算法结束;

当i<1或i>n时,认为将第一个或者最后一个元素删除。

(2)然后从第i+1个元素开始,直到最后一个元素,其中每一个元素均依次往前移动一个位置。

(3)最后将线性表的长度减小1。