一起学数据结构之线性表(中)
今天我们来解决线性表的链式存储结构问题、循环和双向列表。
这部分要渐渐开始用到之前我们特地复习并且打了基础的指针部分。
技术类博客写出去很少人会看,除了知乎这种地方关注度提高些,收获一两个粉丝之外,没有什么太大的影响。反而是博主之前写的一些口水文,内容浅薄、只有情感并无干货的东西总是会得到大量认可。扪心自问,炒情感给口水鸡汤文确实是涨粉良物,为什么偏偏去选了一条冷冷清清的道路,一个人寂寂寞寞地走着。博主内心其实还蛮多感慨的,但既然已经承诺每日一更,自然是要说到做到,求学之路必然寂寞,能与各位一同前行也是博主的荣幸。以上,话不多说,开始我们今天的内容吧。
一、线性表的链式表示及实现
(一)线性表的链式存储结构
之前的绪论部分我们已经谈到链式存储结构的定义,即不要求逻辑上相邻的元素在物理层面也相邻,顾名思义就是利用链表存储数据,它用附加指针表示节点间的逻辑关系。
为了表示某个元素ai与其后继节点之间的逻辑关系,所以我们在存储ai时,还需存储一个指示其后继元素的信息。这两部分组成数据元素ai的存储映象,称为节点(node)。节点结构如下:
datanext
- 由n个节点连接,且每个节点只包含一个指针域的链表称为线性链表或单链表
- 单链表类型定义如下:
typedef struct LNode{
ElemType data;
struct LNode* next;
}LNode,*LinkList;
- 线性表的逻辑结构示意图: