5 X1 W( \* U+ L0 z& M; X0 n4 f时间复杂度:8 x, a1 s ?$ F& z' M/ P4 g
( J, k/ G7 U% p, |
顺序表示和链式表示的相同点: . f+ v4 @- u7 M7 F3 R3 F1 h W+ y+ P3 L7 G, s
删除内存空间: ' f4 O( m' V; e! H4 x/ x1 D3 ]# p8 C
代码实现: * f7 _; t3 r7 k9 o0 ?3 Y) w) e7 x9 O1 b
顺序表示方法: ) o& {1 R( |0 T* u; ^8 B # X6 ]" s- s& O, [7 j结构体定义: h2 n5 d! S) s! p
% k X* ~% `6 @8 C6 ^1 s
初始化6 D) r& R0 B( f' m: s
" |& |* Q+ l/ @5 D
增加元素9 j0 g. W3 D( N/ F
& C& R! ~" Y0 h0 R0 k删除元素 5 o3 i) X( Q, H$ T1 W- Y $ W w) }* ?7 w) D5 g1 R$ y @3 \销毁列表' X8 `$ x; R7 s8 G$ @6 W
5 S2 E5 m7 D& o# D8 X& s链式表示方法6 B& E. m" A8 m, O
3 [ ^* C7 U( U' V. l9 I结构体定义 0 ~ L. G) Y( O; v L% o: }2 ^' z g9 J+ k( \" p初始化 ( X' q3 @" ?- H, \; `- V & P/ h# X) W- e) F- D/ J7 k; X增加节点 : c9 T! a: ]" w& @* G " F, ]5 r0 f! w9 L9 N删除节点 * n& y( L: p$ w. j* K4 l+ J " \) h& m, q1 w3 s, N2 `0 |& y显示链表* ~/ {; B6 o5 O
0 z* {0 D8 K- U+ y销毁链表 / U$ I0 }( k8 T# x' c7 S& N( W0 T2 I( E- e7 u; r& |
顺序表示和链式表示的区别:2 Q4 Z) I( a( [4 J1 W! j1 E
- J p6 u! K( G7 f
创建方式: ; S7 v0 z. I; N, F ?; ?# }/ ~& H # e5 f. P r. \. m顺序表示方法单次创建多个存储单元,相邻的元素存放在连续的存储空间之中。 4 k4 ~0 C" |* x 8 ]9 K, {. z0 z7 H$ e) W4 X(PS:内存空间申请请参考https://blog.csdn.net/Baimax1/article/details/105954552)7 a ^8 H: w8 D/ m# r" p, n" Q
; k- u9 Z V; Y! ^/ d# L+ [$ S链式表示方法单次创建单个存储单元,存储单元之间地址不一定连续。存储单元包括数据部分和地址部分,数据部分存放需要保存的数据,地址部分保存下一个存储单元的地址(单链表,双向链表的地址部分同时也存放上一个存储单元的地址)。! d6 {3 @ ^& {) G
# ^$ [$ n+ l% X, D1 @4 h
时间复杂度: / _1 k2 f+ f1 l, C5 J+ D# C7 ?+ y, L- E$ v
增加 / 删除元素操作:顺序表示方法 O(n);链式表示方法O(1);(PS:在未知位置的元素前 / 后操作) / L0 g; H5 x6 h0 ~4 V" G W% w) p [& A: T增加 / 删除元素操作:顺序表示方法 O(n);链式表示方法O(n);(PS:在已知位置的元素前 / 后操作)+ V9 e: {3 u5 G! o( I" V
( z ]8 H! w+ l' d+ a7 _
PS:顺序表示需要将元素一一后移,链式存储结构需要查找该元素的位置。 7 j% {7 `+ @+ y) [$ d2 j+ V O$ k: h) f! N& d2 \1 ?
修改 元素操作:顺序表示方法 O(1);链式表示方法O(n); 6 s$ h: O: A2 Y7 J: `& P * B* `& e0 E( O查询 元素操作:顺序表示方法 O(n);链式表示方法O(n); * k4 c/ {# r/ G7 X' r( Q+ H ' N3 n; ]. P% Z# ]5 g: M顺序表示和链式表示的相同点:9 z+ g8 G( B5 J3 D) J i: i
; ?8 E+ v1 G6 _9 y: R2 T
删除内存空间: q/ _" A* w4 B6 ^* F
' g1 \6 Z3 l1 `7 s f3 a( y内存空间的删除都需要对每一个存储单元单独释放空间。 + I1 k l% m5 w/ D3 i m. X' v) g! V! ]
代码实现:( q# B% c2 @) j; n* }2 T
2 w x1 }3 [7 x S
顺序表示方法:' z5 p" v) a' @) G$ i# V+ z
1 n) E& _- y& [9 D) C4 H3 T结构体定义 9 i' r5 G7 W# ?2 \/ \1 d1 p2 a% F$ B$ X8 w: E4 M
typedef struct {0 x5 i" K8 g5 ~4 @
ElemType * elem; * l, x+ i2 }6 j/ S f' o int length; // 线性表的现有长度 2 @5 R+ @9 O1 W# `" ~% p
int listSize; // 线性表的最大长度0 c8 R' j' q) p, V- p9 ~( \
}SqList; a F# D2 ]& A6 S9 a2 t f1 [+ }