数据结构复习-链表

博客园:https://www.cnblogs.com/AlexNotFoundBNDS/p/15590308.html

这是本蒟蒻第一次在博客园上发博客,望大佬们多提一些建议!谢谢!

链表链表,是一种链式存储的线性数据结构,以节点(Node)为单位进行存储,每个节点都可以存储在内存的不同位置。每一个链表都需要一个头指针(head)来指向这个链表的第一个节点,方便使用。链表分为两大类:单向链表双向链表。这两种链表很像,下面分开进行讲解。

单向链表

单链表的一个节点由数据域后继指针,一般使用结构体进行节点的存储。下面是单向链表的节点的定义:(C++代码)

struct Node
{
	int value; //数据域,类型随程序需要定义
	Node *next; //后继指针,指向下一个节点;若后面没有节点则存储NULL 
}; 

单链表的图像表示:

接下来我们来讲解一下单链表的基本操作:插入、删除与查找

单向链表的插入

把大象放进冰箱要几步?
三步。
单向链表的插入其实只有三步。第一步肯定是创建新节点,然后把数据拷贝进新节点啦。那之后怎么操作呢?我们把它分成三个基本情况:在链表头,在链表中与在链表末尾

在链表头时,先把这个新节点指向链表的第一个节点,也就是head指向的节点,然后把链表头指向这个新节点就行了。(不要看图片里的那个3)

在链表中间时,先把新节点指向它的下一个节点,也就是上一个节点指向的那个节点,然后再把上一个节点指向这个新节点。

在链表末尾时,先把上一个节点指向新节点,然后把新节点指向NULL,表示这个是链表尾。

单向链表的删除

单向链表的删除只有两步。第一步:把上一个节点指向下一个节点,第二步:把要删除的这个节点从内存上删除

双向链表

双向链表和单向链表很像,除了数据域和后继指针,还有一个前驱指针。C++定义代码如下:

struct Node
{
	int value;
	Node *back, *next;
};

作者是一名学生党,没时间弄完了QwQ只能拖一会更了啊 我会尽量快速更完的!

posted @ 2021-11-22 21:00  AledNotFoundBNDS  阅读(101)  评论(0)    收藏  举报