链表删除结点的问题

板砖先生 2018-07-10 03:56:24
typedef struct LNODE {
data_t data;
struct LNODE * next;
}Node_t, *PNode;


int Delete(PNode* PHead, data_t data)
{
int status = -2;
PNode PCur = *PHead;
while (PCur)
{
if (data.sn == PCur->data.sn)
{
PNode tempNode = PCur;
PCur = PCur->next;
free(tempNode);
tempNode = NULL;
status = 0;//success
break;
}
PCur = PCur->next;
}
return status;//NULL or get it.
}


请问这段代码为什么结点没有删除成功?实在是看不出来。
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-07-10
  • 打赏
  • 举报
回复
引用 2 楼 heabby2010 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:]
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633


谢谢老师,我再研究研究[/quote]
看链接中帖子#43
sghcpt 2018-07-10
  • 打赏
  • 举报
回复
楼主,可以参考参考下面代码:
typedef struct LNODE {
data_t data;
struct LNODE * next;
}Node_t, *PNode;


int Delete(PNode* PHead, data_t data)
{
int status = -2;
PNode PCur = *PHead;
PNode prevNode = NULL;
while (PCur)
{
if (data.sn == PCur->data.sn)
{
if (prevNode != NULL)
prevNode->next = PCur->next;

PNode tempNode = PCur;
PCur = PCur->next;

if (prevNode == NULL)
*PHead = PCur;

free(tempNode);
tempNode = NULL;

status = 0;//success
break;
}

prevNode = PCur;
PCur = PCur->next;
}
return status;//NULL or get it.
}
板砖先生 2018-07-10
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633


谢谢老师,我再研究研究
赵4老师 2018-07-10
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧