数据结构-------线性表..顺序表..链表..顺序表和链表的区别和联系(1)

版权声明:[email protected] https://blog.csdn.net/qq_271334644/article/details/84764579

线性表:

       线性表是N个具有相同特性的数据元素的有限序列 .线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表..链表...栈...队列...字符串...

线性表在逻辑上是线性结构,也就说是连续的一条直线,但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储

顺序表:

       顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改

      顺序表一般可以分为:

      1.静态顺序表:使用定长数组存储.

      2.动态顺序表:使用动态开辟的数组存储.

通俗来讲,静态存储只能是当前开辟的内存空间,随着数据的增加,内存空间将逐渐减少,而动态存储却可以在空间不够时自动增容

接口实现:

静态顺序表只适用于确定知道需要存多少数据的场景.静态顺序表的定长数组导致 定大了,空间开多了浪费,开少了不够用.所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小.

链表:

链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的

实际中链表的结构非常多样,以下情况结合起来就有8中链表结构:

1:单向,双向

2.带头,不带头

3循环,非循环

实际中最常用的还是两种结构:

1.无头单向非循环链表:结构简单,一般不会单独用来存储.实际中更多是作为其他数据结构的子结构,如哈希桶,图的邻接表等等.

2.带头双向循环链表:结构最复杂,一般用在单独存储数据.实际中使用的链表数据结构,都是带头双向循环链表.另外这个结构虽然复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了.

顺序表和链表的区别和联系:

顺序表:

空间连续,支持随机访问

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

2.增容的代价比较大

链表:

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_271334644/article/details/84764579