题目意思:现在有一个已经排好顺序的链表,删除所有重复的节点,使每个节点都只出现一次!
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
Subscribe to see which companies asked this question
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ //遍历链表,遍历过程中保存上一个节点的值如果与当前节点相同就删除 //维护两个指针,一个指向前一个节点,一个指向当前节点,相同就执行删除操作 class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(head==NULL) return NULL; ListNode* preNode=NULL; ListNode* curNode=head; ListNode* delNode=NULL; while(curNode) { if(preNode && preNode->val==curNode->val) { preNode->next=curNode->next; delNode=curNode; curNode=curNode->next; delete delNode; delNode=NULL; continue; } preNode=curNode; curNode=curNode->next; } return head; } };
<LeetCode OJ> 83. Remove Duplicates from Sorted List
原文:http://blog.csdn.net/ebowtang/article/details/50483226