1.3线性表及其顺序存储结构
; ^: O) Z. Q; U 1.3.1线性表的基本概念 (P12—P13)
, G$ A- x- @3 D1 \ _7 U. Q 线性表是由n (n≥0)个数据元素a1,a2,…,an组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。即线性表或是一个空表,或可以表示为。 8 R2 Q p# ]- V$ E& b$ }7 c. b
(a1,a2,…,ai,…,an)
* h: G) [( @' U; M8 z) c! N8 s 非空线性表有如下一些结构特征:
3 C, I/ P4 M. M: I% j ① 有且只有一个根结点a1,它无前件; # y& y/ L5 H d8 x/ c1 b6 i
② 有且只有一个终结点an,它无后件; 3 [- r; j; ]: T& v& a3 _$ j
③ 除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
$ [5 K' J& @( U B' s 1.3.2线性表的顺序存储结构 (P13—P14)
+ h. y0 k: t- I; n& t; q 在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序分配。 % _. ]: H9 n9 i" M8 p4 E
线性表的顺序存储结构具有以下两个基本特点: / `$ ]7 F! K( g* o1 g: S, y
① 线性表中所有元素据所占的存储空间是连续的; : x% C# [) G7 E9 b. l! p) E
② 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
+ D; M+ @$ I0 ?. M2 R0 S; J 假设线性表中的第一个数据元素的存储地址为ADR(a1),每一个数据元素占K个字节,则线性表中第i 个元素ai在计算机存储空间中的存储地址为
2 }, T- \8 m! c1 Z0 w5 h ADR(a1)=ADR(a1)+(i-1)K 0 s0 o* y) c2 a) n. a2 Q; H! S. r
1.3.3顺序表的插入运算 (P14—P15)
9 k' D- D5 d9 {" F' E: ?: z" |( b( ^ 在平均情况下,要在线性表中插入一个新元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况下,要插入一个新元素,其效率是很低的。 $ N" U+ r/ O- Q
1.3.4顺序表的删除运算 (P15—P16) 6 E- @) h0 g9 ~# J
在平均情况下,要在线性表中删除一个元素,需要移动表中表中一半的元素。因此,在线性表顺序存储的情况下,要删除一个元素,其效率也是很低的。 由线性表在存储结构下的插入与删除运算可以看出,线性表的顺序存储结构对于小线性表或者其中元素不常变动的线性表来说是合适的,因为顺序存储的结构比较简单。但这种顺序存储的方式对于元素经常需要变动的大线性表就不太合适了,因为插入删除的效率比较低。 |