线性表
线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中被广泛使用的数据结构,常见的线性表有:顺序表,链表、栈、队列、字符串...
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上不一定是连续的,当线性表存储在物理上时,通常是以数组和链式的结构存储。
顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,在一般情况下使用数组存储。在数组上完成数据的各个操作,例如:增删查改。
顺序表一般可以分为静态顺序表和动态顺序表,静态顺序表使用定长数组存储元素,动态顺序表,使用动态开辟的数组存储。
顺序表的接口实现:静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小。
链表
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现。
虽然链表的结构有很多种,但是从实际考虑我们最常使用的链表结构还是有两种:
1.无头单向非循环链表:这种链表结构简单,一般不会用来单独存储数据,实际中更多的还是作为其他数据结构的子结构,例如:哈希桶,图的邻接表等。
2.带头双向循环链表:这种链表结构很复杂,一般用来单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。虽然这个链表结构复杂,但是当我们使用这个结构来实现代码时会发现这种结构会给我们带来很多优势,实现起来反而没有那么复杂。
今天就简单了解一下他们的知识嘞,希望大家有所收获。