void ListDelete(SP *L)
{
char n[40];
SP *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点
if (p == NULL)
printf("数据为空,无法删除!");
else
{
printf("请输入您要删除的商品名称:");
scanf("%s", n);
while (strcmp(p->name, n) != 0)
{
pre = p;
p = pre->next;
if (p == NULL)
{
printf("没有找到相关信息,无法删除\n");
return;
}
}
pre->next = p->next;
free(p);
printf("删除成功");
}
}
为什么要在定义一个pre。pre=p和后两句都是什么意思
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- flower980323 2022-07-13 09:16关注
pre是单词previous(以前的)的意思,删除一个节点,要保证删除节点的前面那个节点的next节点等于删除节点的后一个节点,
pre = p;
是保证pre是删除节点的前一个节点,pre->next = p->next;
是删除后,让前一个节点指向删除节点的后一个节点。学习链表一般画画图就很好理解
如有帮助,请采纳,谢谢本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 基于OPENCV的人脸识别
- ¥20 51单片机学习中的问题
- ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
- ¥15 Python中knn问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!