最新不懂你打我,超简单的单链表的创建,2024年最新【好文推荐】

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

传的是地址,因为是SLnode*list    传的是&list   也就是要用二级指针接收  形参与实参的关系在指针的学习已经有了初步的了解,如果是传值的话就用一级指针接收

下面举个例子:

如果实参是int类型  要改变实参,要传int*类型

如果实参是int*类型,就要传int**类型

接下来是打印数据:

这个很简单  不用说了!

4、删除数据   找到某值然后删除

完整代码:

#include<assert.h>
#include<stdio.h>
#include<stdlib.h>

//定义节点结构
typedef struct SLnode
{
	int data;
	struct SLnode* next;
}SLnode;


//插入数据
void SLnodePushBack(SLnode** list, int x)
{
	//创建结点 取值
	SLnode* newnode = (SLnode*)malloc(sizeof(SLnode));
	newnode->data = x;//赋值
	newnode->next = NULL;//新节点指向NULL
	//判断是否为空 
	if (*list == NULL)
	{
		*list = newnode;//将新节点的地址给list
	}
	else  //如果不是空,那么创建一个移动指针,指到最后一个结点 再插入数据
	{
		SLnode* move = *list;//将list的地址传给move  作为移动
		while (move->next != NULL)
		{
			move = move->next;//指针移动
		}
		//移动到了最后一个结点 
		move->next = newnode;//移动指针的next里存的是newnode的地址,算是连接上
		move = newnode;//move更换结点  跳到了newnode上
	}
}

//打印数据
void SLnodeprint(SLnode* list)
{
	SLnode* tail = list;//创建一个指针遍历链表
	while (tail != NULL)
	{
		printf("%d->", tail->data);
		tail = tail->next;
	}
	printf("NULL\n");
}


//删除数据
void SLnodePopBack(SLnode** list, int x)
{
	//创建一个临时指针 遍历到x的位置  然后删除
	//assert(*list != NULL);//断言 如果是NULL直接退出  很粗暴
	//这种比较温柔
	if (*list == NULL)
	{
		return;
	}
	SLnode* pend = *list;
	if (pend->data == x)//如果头结点==x
	{
		*list = pend->next;//那么链表的头就是pend的下一个结点
	}
	else
	{
		//SLnode* pend = *list;
		SLnode* perv = pend->next;//创建一个临时指针,来遍历链表
		while (perv != NULL)
		{
			if (perv->data == x)
			{
				pend->next = perv->next;//将pend的next的地址获取的是perv的next里的地址
				free(perv);//再释放结点
				perv = pend->next;//将pend->next的地址传给perv


			}
			else


![img](https://img-blog.csdnimg.cn/img_convert/df3be53de143952c6ddd04651283f585.png)
![img](https://img-blog.csdnimg.cn/img_convert/1c6472ced8bf327117f2343c74e16d30.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

ttps://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值