数据结构篇之链式线性表

一、线性链表的概念

线性链表就是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以不是连续的),对于每一个节点来说,都分为两个域,一个是存储数据元素信息的数据域,另一个是指针域。

二、单链表

1、单链表的概念

单链表又称为线性链表,指针域存储直接后继的地址信息。假设一组数组(ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG),如下

在这里插入图片描述

链表之间的数据元素之间的逻辑关系是由节点中的指针指示的,逻辑上相邻的两个数据的物理位置并不需要相邻,如下图:

在这里插入图片描述

头结点的数据域可以不存储任何信息,也可以存储如线性表的长度等类的附加信息。由上图可以看出,单链表如果想访问某个数据,得先访问前一个节点获取地址值。

2、单链表的增删

假设要在a,b节点之间插入一条数据,在单链表怎么实现的呢?

在这里插入图片描述

要插入元素x,首先要生成一个数据域为x的节点,然后修改a的指针域,令其只想x节点,而x节点的指针域应该指向b节点,这样就成功的在a,b节点之间插入x节点。

插入x成功了,现在如果想删除是怎么做到的呢?

在这里插入图片描述

其实就是插入的逆过程,只需要将a节点的指针域修改指向为b节点。

可见,在已知链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个节点时,仅需修改指针而不需要移动元素。

三、循环链表

循环链表是另一种形式的链式存储结构,它的特点是表中最后一个节点的指针域指向头结点,整个链表形成一个环,如下图:

在这里插入图片描述

循环链表的增删操作和单链表基本一致。

四、双向链表

双向链表,顾名思义,在表的节点中有两个指针域,其一指向直接后继,另一指向直接前驱,如下图所示:

在这里插入图片描述

双向链表的增删操作和单链表也基本类似。

五、总结

  • 单链表每次都必须从头节点开始访问,才能找到表中的某个节点;
  • 循环链表从表中任一节点出发都可找到表中的其他节点;
  • 单链表和循环链表只能从头节点出发,然后按照单一方向往后寻找其他节点,双向链表中解决了这种单向性的缺点。
原创文章 16 获赞 17 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SGdan_qi/article/details/104399483
今日推荐