Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
思路:首先要保证链表不为空.其次,要找到真正的开头(如果head值就是val,head需要后移)
找到开头(head)后时,用p表示当前Node.
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
if head is None:
return None
while head.val == val:
if head.next is None:
return None
head = head.next
p = head
while p.next:
if p.next.val != val:
p = p.next
elif p.next.next is None: #提交时候并不需要判断p.next.next.不报错.
p.next = None
else:
p.next = p.next.next
return head