数据结构与算法: 链表
使用数组包含以下限制:
线性表(数组):可以随机存储,存储密度高.但是要求连续空间,改变容量不方便.
在程序中使用之前,必须事先知道数组的大小。
增加阵列的大小是一个耗时的过程。在运行时扩展数组的大小几乎是不可能的。
数组中的所有元素都需要连续存储在内存中。在数组中插入任何元素都需要移动其所有前置元素。
链表是可以克服数组的所有限制的数据结构。使用链表很有用,因为,它动态分配内存。链表的所有节点都非连续地存储在内存中,并在指针的帮助下链接在一起。
大小不再是问题,因为我们不需要在声明时定义其大小。列表根据程序的需求增长,并限制为可用的内存空间。
链表:
单链表:不要求大片连续空间,改变容量方法,但是不可以随机存取,要耗费一定的空间存放指针
- 链表可以定义为随机存储在内存中的称为节点的对象的集合。
- 节点包含两个字段,即存储在该特定地址的数据和包含内存中下一个节点地址的指针。

列表的最后一个节点包含指向 null 的指针。
- 链表不需要连续存在于内存中。节点可以驻留在内存中的任何位置,并链接在一起以形成列表。这实现了空间的优化利用。
- 列表大小限制为内存大小,不需要提前声明。
- 空节点不能存在于链接列表中。
- 我们可以将基元类型或对象的值存储在单个链接列表中。
单向链表
单链表可以定义为有序元素集的集合。元素的数量可能会根据程序的需要而有所不同。单链接列表中的节点由两部分组成:数据部分和链接部分。节点的数据部分存储将由节点表示的实际信息,而节点的链接部分存储其直接后继者的地址。
单向链或单向链只能沿一个方向遍历。换句话说,我们可以说每个节点只包含下一个指针,因此我们不能以相反的方向遍历列表。

DS 单链接列表
在上图中,箭头表示链接。每个节点的数据部分都包含学生在不同科目中获得的分数。列表中的最后一个节点由空指针标识,空指针存在于最后一个节点的地址部分。我们可以在列表的数据部分拥有尽可能多的元素。
双向链表
请添加图片描述
Node 创建
struct node
{
struct node *prev;
int data;
struct node *next;
};
struct node *head;
循环单链表

表头结点的prior指向NULL;
表尾结点的next指向NULL.
循环双链表

表头结点的prior指向表尾结点;
表尾结点的next指向头结点.
在数据结构中跳出链表

跳过列表中有以下类型的操作。
- 插入操作:它用于在特定情况下将新节点添加到特定位置。
- 删除操作:它用于在特定情况下删除节点。
- 搜索操作:搜索操作用于搜索跳过列表中的特定节点。
posted on 2022-04-16 09:47 Michael_chemic 阅读(89) 评论(0) 收藏 举报
浙公网安备 33010602011771号