Remove Linked List Elements

来源:互联网 发布:网络数据拦截分析工具 编辑:程序博客网 时间:2024/05/03 01:14

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def removeElements(self, head, val):        """        :type head: ListNode        :type val: int        :rtype: ListNode        """        while head:            if head.val == val:                head = head.next            else:                break        if not head:            return head        p, q = head, head.next        while(q):            if q.val == val:                q = q.next                p.next = q            else:                p, q = q, q.next        return 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) {    /*  ListNode *p = head, *q;        while (head){            if (head->val == val){                head = head->next;                delete p;                p = head;            }            else                break;        }        if (!head)            return head;        while (p->next != NULL){            q = p->next;            if (q->val == val){                p->next = q->next;                delete q;                q = p->next;            }            else{                p = q;                q = q->next;            }        }        return head; */                ListNode **p = &head;        while (*p != nullptr){            if ((*p)->val == val)                *p = (*p)->next;            else                p = &(*p)->next;        }        return head;    }};


0 0
原创粉丝点击