☰
单链表原来这么简单!定义原理 + 实战全拆解
2026/9/29 2:58:31 网站建设 项目流程

天地苍苍几个秋,事事轮转似相识。

单向红尘深陷中,回顾已无来时路。

此间多少付错意,寥寥几笔书平生。

泥泞路,蹒跚走,唯一处,苦寻之。——————单链表

  1. 链表初印象:揭开单链表的真面目(单链表的定义)
    typedef int SLTDataType; typedef struct S { SLTDataType data; struct S* next; }SLTNode;

    这一定义应在项目的头文件(.h)中编写

  2. 链表巡礼:从头到尾逛一遍链表(单链表的打印)
    void SLTPrintf(SLTNode* phead) { SLTNode* pcur = phead; while (pcur)//当pcur为NULL时退出循环 { printf("%d->", pcur->data);//打印类型取决于数据data的类型 pcur = pcur->next;//pcur指针自动向后移动一个结点,直到最后一个结点 } }
  3. 结点诞生记:为数据 x 打造专属小房间(创建一个数据x的结点)
    SLTNode* SLTbuyNode(SLTDataType x) { SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode)); //C语言中运用malloc函数需要包含头文件#include<stdlib.h>,参数单位是字节 if (newnode == NULL)//检验是否创建失败 { perror("malloc fail:"); //perror函数是为了验证malloc为什么创建失败,打印出创建失败的原因 exit(1); //如果创建失败就退出程序 } newnode->data = x; newnode->next = NULL; return newnode; //返回的是新结点的地址 }
  4. 尾巴安家:在链表最后悄悄加新家(单链表的尾插)
    void SLTPushBack(SLTNode** pphead, SLTDataType x) //由于要通过影响形参,来影响实参,故采用传址调用(二级指针) { assert(pphead); //判断pphead是否为空指针,防止对空指针解引用造成程序错误,C语言中引用assert断言需要包含头文件#include<assert.h> SLTNode* newnode = SLTbuyNode(x);//将新申请的x结点空间地址传给newnode if (*pphead == NULL)//判断初始时链表是否为空 { *p

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询