恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
单链表原来这么简单!定义原理 + 实战全拆解
首页
资讯中心
/
单链表原来这么简单!定义原理 + 实战全拆解
单链表原来这么简单!定义原理 + 实战全拆解
发布时间:2026/9/29 2:58:34
天地苍苍几个秋,事事轮转似相识。单向红尘深陷中,回顾已无来时路。此间多少付错意,寥寥几笔书平生。泥泞路,蹒跚走,唯一处,苦寻之。——————单链表链表初印象:揭开单链表的真面目(单链表的定义)typedef int SLTDataType; typedef struct S { SLTDataType data; struct S* next; }SLTNode;这一定义应在项目的头文件(.h)中编写链表巡礼:从头到尾逛一遍链表(单链表的打印)void SLTPrintf(SLTNode* phead) { SLTNode* pcur = phead; while (pcur)//当pcur为NULL时退出循环 { printf("%d-", pcur-data);//打印类型取决于数据data的类型 pcur = pcur-next;//pcur指针自动向后移动一个结点,直到最后一个结点 } }结点诞生记:为数据 x 打造专属小房间(创建一个数据x的结点)SLTNode* SLTbuyNode(SLTDataType x) { SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode)); //C语言中运用malloc函数需要包含头文件#includestdlib.h,参数单位是字节 if (newnode == NULL)//检验是否创建失败 { perror("malloc fail:"); //perror函数是为了验证malloc为什么创建失败,打印出创建失败的原因 exit(1); //如果创建失败就退出程序 } newnode-data = x; newnode-next = NULL; return newnode; //返回的是新结点的地址 }尾巴安家:在链表最后悄悄加新家(单链表的尾插)void SLTPushBack(SLTNode** pphead, SLTDataType x) //由于要通过影响形参,来影响实参,故采用传址调用(二级指针) { assert(pphead); //判断pphead是否为空指针,防止对空指针解引用造成程序错误,C语言中引用assert断言需要包含头文件#includeassert.h SLTNode* newnode = SLTbuyNode(x);//将新申请的x结点空间地址传给newnode if (*pphead == NULL)//判断初始时链表是否为空 { *p