鱼C论坛

 找回密码
 立即注册
查看: 2656|回复: 3

[已解决]单链表删除的问题

[复制链接]
发表于 2020-5-22 19:08:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼视频代码
  1. Status ListDelete(LinkList *L, int i, ElemType *e)
  2. {
  3.         int j = 1;
  4.         LinkList p, q;
  5.         p = *L;
  6.         while(p->next && j < i)                //遍历第1个位置~最后1个位置
  7.         {
  8.                 p = p->next;
  9.                 j++;
  10.         }
  11.         if(!(p->next) || j > i)
  12.         {
  13.                 return ERROR;
  14.         }
  15.         q = p->next;
  16.         p->next = q->next;
  17.         *e = q->data;
  18.         free(q);
  19.         return OK;
  20. }
复制代码

如果要删除最后一个位置,最后一个位置的next必为NULL,就返回错误,永远无法删除最后一个位置了。
求解释一下。
最佳答案
2020-5-23 11:43:20
这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指向第二个结点,j=3;
退出循环,if条件不满足;
执行下面的语句,删除第三个结点,也是最后一个结点。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 11:43:20 | 显示全部楼层    本楼为最佳答案   
这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指向第二个结点,j=3;
退出循环,if条件不满足;
执行下面的语句,删除第三个结点,也是最后一个结点。
微信图片_20200523113921.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 11:44:51 | 显示全部楼层
第一次回答问题,不知道对不对,如果有不对的,请指正
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 20:15:56 | 显示全部楼层
Sally2121 发表于 2020-5-23 11:43
这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指 ...

我昨晚自己走了一遍解决了,还是谢谢你,这数据结构这区域挺冷清的...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-13 06:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表