数据结构:顺序表,链表各自概念及优缺点

顺序表与链表都是线性表(n个具有相同特性的数据元素形成的有限序列)。

 

顺序表 是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表又分为静态顺序表和动态顺序表,静态顺序表使用定长数组来存储数据,但是如果一旦存储超过定长,就很难处理,所以把静态顺序表的定长数组改为动态开辟的数组。

这个是我自己写的简单顺序表功能实现:https://blog.csdn.net/zjx1113/article/details/84727490

 

链表 是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表有八种形式,单向,双向,带头,不带头(有无新节点),循环,非循环。在这八种形式中常用的是无头单向不循环链表(结构简单,一般不会单独用来存数据,实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。)和有头双向循环链表(结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现后会发现结构会带来很多优势,实现反而简单了)。

这是我写的单向无头单向非循环链表的简单功能实现:https://blog.csdn.net/zjx1113/article/details/84774964

 

优缺点 :

  顺序表 链表
优点 空间连续、支持随机访问

1.任意位置插入删除时间复杂度为O(1)

2.没有增容问题,插入一个开辟一个空间

缺点

1.中间或前面部分的插入删除时间复杂度O(N)

2.增容的代价比较大

以节点为单位存储,不支持随机访问

 

由于两者的优缺点发现:

顺序表 更适合存放需要多次修改查看的数据,不适合需要大量增删的数据。

链表 与顺序表相反适合存储需要大量增删的数据,而非需要多次改查的数据。

 

你可能感兴趣的:(数据结构与算法)