线性表从物理结构上分,有顺序存储结构和链式存储结构两种。既然有了顺序存储结构,又何必再有一个链式存储结构呢?原因就在于,顺序存储结构在存储大量的元素,对这些元素进行插入或这删除操作时,会浪费大量的时间。因为,采用顺序存储结构,这些元素的地址都是相邻的,如果删除或者插入一个元素,则需对其后的所有元素进行移动,故非常的浪费运行时间,运行效率不高。

  链式存储结构却避免了这样的问题。因为,链式存储并不需要去关心元素存在哪个位置,也就是说,链式存储可以让元素存于内存的任意位置,而我只要知道元素的地址即可。如下图所示:

线性表的链式存储结构_链表

这种存储方式就完全不需要各个元素是相邻的位置,只需要知道每一个元素的地址即可。通过上图可以发现,采用了链式存储结构的元素之间互相串联,就像是一个表,所以,将这种形式称为链表。那么,可以将每一个数据所占的单元叫做,结点。因为,我们不仅需要知道存储的元素值,还需要知道元素的地址,因此,一个结点就是由一个数据和存放数据的地址,两部分组成。

  那么,总结一下就是,链表是由一个个结点构成,而每一个结点是由一个存放数据的数据域和一个存放数据地址的地址域构成。

  这个地址域存放的并不是当前元素的地址,而是,下一个元素的地址。

代码如下:

typedef struct Node{
    
    ElemType data;
    struct Node *next;

}Node;

typedef struct Node *LinkList;