一、简单描述
思路:设存储元素ai的结点为q,要实现将结点q删除单链表的操作其实就是将它的前继结点的指针绕过指向它的后继结点即可。
结果:删除L的第i个元素,用e返回其值,链表长度减一
(图源:程杰《大话数据结构(溢彩加强版)》)
核心算法:
1.q=p->next; //q作为临时指针,将p的后继也就是ai赋值给q
2.p->next=q->next; //再将q的后继也就是ai+1赋值给p的后继也就是ai
二、详细步骤:
1.初始化指针和计数器
j初始化为1,用于记录当前遍历的节点位置
定义两个指针变量p和q,其中p
指向链表的头节点,q用于要删除的节点。
int j=1;
LinkList p,q;
p=*L;
2.遍历链表找到第i个位置节点
使用while循环,直到找到第i个位置或链表末尾
while(p->next&&j<i){