C语言单链表删除节点代码详解 - ListDelete 函数实现
// 删除链表中第i个节点,并将删除的节点的数据域存储在e中,返回OK表示删除成功,返回ERROR表示删除失败 Status ListDelete(LinkList *L, int i, ElemType *e){ int cnt = 1; // 计数器,用于记录当前遍历到的节点位置 LinkList q, p; // 定义两个指针,q为要删除的节点,p为q节点的前一个节点 p = (*L); // 将p指针指向头节点,即第一个节点的前一个节点 // 循环遍历链表,直到找到要删除的节点位置或者到达链表末尾 while (p->next && cnt < i) { p = p->next; // p指针后移 cnt++; // 计数器加1 } // 如果已经到达链表末尾,且还没有找到要删除的节点位置,则删除失败 if (!(p->next)) { return ERROR; } // 找到要删除的节点位置,即p节点的下一个节点,即q节点 q = p->next; p->next = q->next; // 将p节点的指针指向q的下一个节点,即删除q节点 *e = q->data; // 保留要删除节点的数据域,即将q节点的数据域赋值给e free(q); // 释放q节点的内存空间 return OK; // 删除成功,返回OK }
原文地址: https://www.cveoy.top/t/topic/nSPJ 著作权归作者所有。请勿转载和采集!