标题: 线性表顺序表示、链式表示实现方法及其异同点 [打印本页] 作者: 杨利霞 时间: 2020-5-10 16:11 标题: 线性表顺序表示、链式表示实现方法及其异同点 6 H2 w. D' }! |5 {' a 线性表顺序表示、链式表示实现方法及其异同点+ A$ ?5 W, r* T. A/ p" Q3 t7 w
线性表是最常用且最简单的一种数据结构,按存储单元排列可分为顺序表示和链式表示两种方式。 * y" x( x; f3 e3 v2 @ f$ Z3 Y & J5 R& @$ E; d9 a! F本文采用C++实现两种表示方法。1 d% Z& x5 o. ~3 z7 S
+ V9 Z1 D+ t* D0 q* I. O# i& q
目录% X8 w0 {8 }/ A8 W% B
! `3 G- ~$ a1 U& _9 M
顺序表示和链式表示的区别: # W$ W5 P6 V2 e6 f. n( G1 B' s e: e* ^' [0 }创建方式: ! @& A) E; T; x0 ~8 u 1 h& H: g% t/ I5 A& w5 M) n' D时间复杂度: . K J: }9 B5 g7 G3 U l2 G" H& }& N" O$ x* n# K
顺序表示和链式表示的相同点:# c1 E8 C$ B0 M% l3 g! B s
4 e$ n2 ^* T4 A3 n8 J# e删除内存空间: 3 P& D9 ^- J: \% F) E, u2 C4 k* o+ |+ }( U8 a3 J# S
代码实现:4 o/ r9 G- L3 S
! \5 |2 S5 M3 o+ U# C7 o7 k/ W
顺序表示方法: - D; J) K+ j& a$ L% K% { 5 R. ^! g7 T" [. E' C1 Y结构体定义 5 P4 C. j" Z) z4 B6 ` 3 Z$ \- |) m! _& T/ F, U7 i" j初始化 ' u# M0 ^+ }% ~# Y: D h/ l; v1 T. _& b' P; I( j
增加元素! u' v5 g3 j& I( D6 j% g
2 u. G4 |4 {5 o( _* A3 ~0 c9 m删除元素 5 q$ ^5 G2 N3 B1 v9 W. n3 k) u4 V- g4 i; v3 n/ z, e; Q( c
销毁列表 ! l* |( a; W7 D6 G! t% n. [, _- e& O) O
链式表示方法 , X9 J0 b5 X5 x }% K4 H* z0 D* v. H9 A& q- \: P- ]
结构体定义$ v; u$ h3 z; L
: p+ x0 u$ b0 }) k4 R: r
初始化 ( L/ P" [5 [! T( D, F6 L: u6 _8 N; I) \5 a
增加节点 9 c3 e5 q& M0 d) N+ L6 `" [- R 1 M: l. [9 f: R# s删除节点 W6 X$ ~7 f' m0 g
+ M# x- j7 v# v0 ]5 g显示链表 * Y/ z* K5 _3 I7 h* y8 W $ ?$ k5 g, @* S3 F* J. u7 |& D L销毁链表' t* b9 H: k2 V3 f7 x+ s
- B/ i. ^& a$ ?* U2 Z9 d# s8 n
顺序表示和链式表示的区别: - T- v6 g) `0 K( b; a7 X& O7 c2 J- o2 @2 Y. i
创建方式: - j, V% K3 ^. B* ]0 | $ O8 q f1 y' v; K8 K8 a2 X. I顺序表示方法单次创建多个存储单元,相邻的元素存放在连续的存储空间之中。 : P& f# ~0 H+ R4 F+ w1 _, R2 j% H) F& c5 b
(PS:内存空间申请请参考https://blog.csdn.net/Baimax1/article/details/105954552)2 k' y ^) ~* s8 }- g
/ M* E P: B* T: ~" n- F* `* W( H链式表示方法单次创建单个存储单元,存储单元之间地址不一定连续。存储单元包括数据部分和地址部分,数据部分存放需要保存的数据,地址部分保存下一个存储单元的地址(单链表,双向链表的地址部分同时也存放上一个存储单元的地址)。; P g4 m V) [# B* i4 H
3 l' Z* V# Y+ T" i' F* e时间复杂度:) v! m5 h& s: d$ b. x! ~! {
$ y* t$ q$ F8 e( E! T* `7 F! {2 O' j
增加 / 删除元素操作:顺序表示方法 O(n);链式表示方法O(1);(PS:在未知位置的元素前 / 后操作) 3 v# p- @ O1 e0 q8 G( @' t' o! G! g1 b$ F2 ?4 w. f
增加 / 删除元素操作:顺序表示方法 O(n);链式表示方法O(n);(PS:在已知位置的元素前 / 后操作)( n5 g7 p, |$ C% P
/ C7 l+ l l' `9 f# W
PS:顺序表示需要将元素一一后移,链式存储结构需要查找该元素的位置。 0 P) _1 Y5 ]/ `9 i & ]; S# Z/ T5 f0 P修改 元素操作:顺序表示方法 O(1);链式表示方法O(n);" ?$ v& o" I5 T- p
O3 @3 H' ]$ f
查询 元素操作:顺序表示方法 O(n);链式表示方法O(n);5 ?7 P& U) v% i& o