techmagician 发表于 2016-9-20 08:51:54

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

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

//节点定义
struct ListNode
{
        int val;
        ListNode *next;
      ListNode(int x) : val(x), next(NULL) {}
};

我的代码
ListNode* removeElements(ListNode* head, int val) {
      if (head == NULL) return head;
      if (head->next == NULL)
      {
            if(head->val == val) return NULL;
            else return head;
      }
   
      ListNode* it = head;
      while(it->next)
      {
            if(it->next->val == val)
            {
                it->next = it->next->next;
            }
            it = it->next;
      }
      if(it->val == val) it = NULL;//it此时为最后一个节点,单独处理
      if(head->val == val) //单独处理表头
      {
            if(head->next == NULL) return NULL;
            else
            {
                head = head->next;
            }
      }
      return head;
    }

比如输入链表1->1->1,删除1,就不对,不知道哪里错了,希望高手能指点一下

DarkSE 发表于 2016-10-6 09:15:58

有完整代码吗?看了一遍好像是while里面出现问题了,那个访问到未知地址了
页: [1]
查看完整版本: 从链表中删除所有指定值的节点,不知道哪里错了