鱼C论坛

 找回密码
 立即注册
查看: 3924|回复: 1

从链表中删除所有指定值的节点,不知道哪里错了

[复制链接]
发表于 2016-9-20 08:51:54 | 显示全部楼层 |阅读模式

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

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

x
从链表中删除所有指定值的节点
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

  1. //节点定义
  2. struct ListNode
  3. {
  4.         int val;
  5.         ListNode *next;
  6.         ListNode(int x) : val(x), next(NULL) {}
  7. };
复制代码


我的代码
  1. ListNode* removeElements(ListNode* head, int val) {
  2.         if (head == NULL) return head;
  3.         if (head->next == NULL)
  4.         {
  5.             if(head->val == val) return NULL;
  6.             else return head;
  7.         }
  8.    
  9.         ListNode* it = head;
  10.         while(it->next)
  11.         {
  12.             if(it->next->val == val)
  13.             {
  14.                 it->next = it->next->next;
  15.             }
  16.             it = it->next;
  17.         }
  18.         if(it->val == val) it = NULL;  //it此时为最后一个节点,单独处理
  19.         if(head->val == val) //单独处理表头
  20.         {
  21.             if(head->next == NULL) return NULL;
  22.             else
  23.             {
  24.                 head = head->next;
  25.             }
  26.         }
  27.         return head;
  28.     }
复制代码


比如输入链表1->1->1,删除1,就不对,不知道哪里错了,希望高手能指点一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-6 09:15:58 | 显示全部楼层
有完整代码吗?看了一遍好像是while里面出现问题了,那个访问到未知地址了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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