203. Remove Linked List Elements

来源:互联网 发布:书生软件推广 编辑:程序博客网 时间:2024/06/06 00:37

Problem:


Solution:

题目的意思很简单,给定一个单链表,删除值为val的所有结点,具体的实现方法也很清楚,设置一个遍历指针,依次判断各结点即可。此题比较烦人的一点就是稍不注意就会出现空指针异常,还有就是对结点head的处理,这里的head并不是常规意义上的头结点,而是整个链表的第一个结点。以前总不是很了解设置头结点的意义,这次终于懂了,没有头结点真的太麻烦了。
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        if (head == NULL) return NULL;        ListNode* temp = head;        while (head->val == val)        {            if (head->next == NULL) return NULL;            else head = head->next;        }        while (temp->next != NULL)        {            if (temp->next->val == val)            {                temp->next = temp->next->next;            }            else temp = temp->next;        }        return head;    }};


0 0
原创粉丝点击