删除链表中的元素

452. 删除链表中的元素

删除链表中等于给定值val的所有节点。

您在真实的面试中是否遇到过这个题?

Yes

样例

给出链表

1->2->3->3->4->5->3, 和 val =

3, 你需要返回删除3之后的链表:1->2->4->5

标签

相关题目

思路:很简单的一道题目,但由于没有保存节点导致一直没AC成功,所以以后一定要记住啊!
AC代码

class Solution {
public:
    /*
     * @param head: a ListNode
     * @param val: An integer
     * @return: a ListNode
     */
    ListNode * removeElements(ListNode * head, int val) {
        // write your code here
        if(head == NULL)  
            return NULL; 
         while(head->val == val){  
            head = head->next;  
            if(head == NULL)  
                return NULL;  
        } 
        ListNode *pre=head;//需设置一个新的节点保存head
        while(pre->next!=NULL){
            if(val==pre->next->val){
               pre->next=pre->next->next;
            }else
            {pre=pre->next;}
        }
        return head;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容