int DeleteNodes(Node** phead, double x) {
Node* prev = NULL;
Node*** pphead = &phead;
int count = 0;
for (int pos = 1; currNode; prev = currNode, currNode = currNode->next) {
if (currNode->data == x) {
if (prev) {
prev->next = currNode->next;
free(currNode);
count++;
currNode = prev;
}
else {
*phead = currNode->next;
free(currNode);
count++;
currNode = **pphead;
if (currNode->next == NULL)
free(currNode);
}
}
}
return count;
}*/
这个删除链表中所有x要怎么实现 我写完之后这个for循环在第二三种情况下停不下来
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 快乐鹦鹉 2022-10-06 17:04关注
int DeleteNodes(Node** phead, double x) { int count = 0; Node* current =*phead; Node* pre=NULL; while (current != NULL) { if (current->data == x) { if (pre == NULL) { //如果删除的节点是头结点,那么原来链表的第二个节点就是头节点,此时pre依旧是NULL *phead = current->next; count++; free(current); current = *phead; } else { //删除的节点不是头结点,那么pre的下一个节点就是当前节点的下一个节点 pre->next = current->next; count++; free(current); current = pre->next; } } else { pre = current; current = current->next; } } return count; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 求TYPCE母转母转接头24PIN线路板图
- ¥100 国外网络搭建,有偿交流
- ¥15 高价求中通快递查询接口
- ¥15 解决一个加好友限制问题 或者有好的方案
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型