Test instructions
Given a sorted linked list, delete all duplicates such this each element appear only once.
for example,
given 1->1->2
, Return 1->2
.
given 1->1->2->3->3
, Return 1->2->3
.
Ideas:
Delete the duplicates in the list and investigate the list operation.
The main thing is to use the loop to determine whether the value of the current node and the next level node is the same, or modify the current node's next pointer to the next node.
Note that the pointer is not empty when you operate it.
Code:
C++:
/** * Definition for singly-linked list. * struct ListNode {* int val; * ListNode *next; * listnode (int x): Val (x), Next (NULL) {} *}; */class Soluti On {public: listnode *deleteduplicates (ListNode *head) {/ * save head Pointer */ listnode* root = head; while (head! = null) {/ * the next node exists, and the value of the current node and the next node repeats * /while (head->next! = null && Head->val = = Head->next->val) { head->next = head->next->next; } Head = head->next; } return root; }};
Python:
# Definition for singly-linked list.# class listnode:# def __init__ (self, x): # self.val = x# Self.next = Nonec Lass Solution: # @param head, a listnode # @return a listnode def deleteduplicates (self, head): p = head
while P! = None: While p.next! = None and P.val = = P.next.val: p.next = p.next.next p = p.next return Head
"Leetcode" Remove duplicates from Sorted List