
单链表是数据结构中最基础也最核心的线性表之一。熟练掌握其查找、指定位置插入与删除等操作,是深入学习算法与数据结构的关键一步。本文将从零实现单链表的常用接口,详细拆解每一步思路与代码细节,帮助大家真正理解指针操作与链表结构,夯实编程基础。
一、查找
思路:
遍历:pcur 指向头结点,循环判断。当 pcur 不为空时进入循环,若 pcur->data 为要查找的值则返回 pcur;否则将 pcur 指向下一个结点的地址继续判断,直到找到值或为空。
代码:
SLTNode* SLTFind(SLTNode* phead, SLTDataType x) {
SLTNode* pcur = phead;
while (pcur) {
if (pcur->data == x)
return pcur;
pcur = pcur->next;
}
return NULL;
}
测试:
void test1() {
SLTNode* head = NULL;
SLTPushFront(&head, 1);
SLTPushFront(&head, 2);
SLTPushFront(&head, 3);
SLTNode* find = SLTFind(head, 1);
if (find)
printf("找到了!\n");
else
printf("未找到\n");
}
运行结果:

时间复杂度: O(n)
二、指定位置之前或之后插入元素
2.1 在指定位置之前
思路: 头文件不能为空,也不能在空之前插入结点。首先要找到 位置的前一个结点(记为 ),让它的 指针指向新节点,然后让新节点的 指针指向 。











