网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**