单链表的创建、遍历、与增删改查

前言:我先这篇文章的目的是为了分享自己所学的东西。
链表是一种很常见的数据结构,但是因为与指针的结合,使得它变得让人头疼,初学者往往会被其搞得晕头转向,好了废话不多说下面开始。

1、创建链表

首先是创建链表,这个大家应该都会
在这里插入图片描述

2、初始化链表

在这里插入图片描述num所代表的是节点的个数。初始化链表是最让我头晕的一个部分了,不过理解了之后还是挺简单的。我们首先要做的就是先申请新节点,然后将新节点的指针域置为空,之后判断链表是否为空,如果为空则使头指针指向新的节点p,不然的话使q(q指的是最后一个节点)的指针域指向新节点p,然后将q指向p(为了保证q是最后一个节点)。最后将q的指针域置空,返回头指针。

3、遍历输出链表

在这里插入图片描述
遍历输出操作很简单,不多说。就是循环将头指针后移,输出其中的数据就行了。

4、插入操作

插入操作分为尾插法和头插法,先说尾插法
在这里插入图片描述
尾插法是将辅助指针temp指向最后一个节点,然后将temp的指针域指向新的节点p,并使p的指针域置空。下面是头插法
在这里插入图片描述
头插法便是在头节点的前面插入新的节点。所以我们要判断所要插入的位置是不是头节点。如果是头节点的话便使新节点p的指针域指向头节点,将头指针指向新的头节点p。如果是链表的中间的话,便将新节点p的指针域指向相邻的节点temp,将temp的指针域指向新的节点。最后返回头指针。其中很重要的一条是遍历链表的时候一定要(temp->next!=NULL),而不是(temp!=NULL)。

5、链表的删除

在这里插入图片描述
删除便是找到所要删除的节点temp,然后将其摘掉,但是为了保证链表的连续,就得将temp节点的前一个节点p的指针域指向原本temp的指针域,之后就可以摘链了。不过需要注意的是要记得判断是否是头节点,如果是的话就得让头指针后移。

6、链表的修改

看到这里已经没有什么难点了,基本上就是简单的遍历链表了
在这里插入图片描述
不过还是需要注意遍历判断的条件(temp->next!=NULL)。

7、链表的查询

在这里插入图片描述
和前面一样。

猜你喜欢

转载自blog.csdn.net/qq_43161124/article/details/82917555