fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct ListNode {
  5. int val;
  6. ListNode *next;
  7. ListNode(int x) : val(x), next(NULL) {}
  8. };
  9.  
  10. class Solution {
  11. public:
  12. ListNode* deleteDuplicates(ListNode* head) {
  13. if(head == NULL) return NULL;
  14.  
  15. ListNode* first = head, *second = head;
  16. // 1 -> 1 -> 2 -> 3 -> 3 -> NULL
  17. if(head->next != NULL) second = head->next;
  18.  
  19. while(second != NULL) {
  20. if(first->val == second->val) {
  21. ListNode* temp = second;
  22.  
  23. second = second->next;
  24. first->next = second;
  25.  
  26. delete temp;
  27.  
  28. if(second->next != NULL) {
  29. second = second->next;
  30. } else {
  31. break;
  32. }
  33. } else {
  34. first = first->next;
  35. second = second->next;
  36. }
  37. }
  38. return head;
  39. }
  40. };
  41.  
  42.  
  43. int main()
  44. {
  45. // 1 -> 1 -> 2 -> 3 -> 3 -> NULL
  46. ListNode* node = new ListNode(1);
  47. ListNode* head = node;
  48.  
  49. node->next = new ListNode(1);
  50. node->next->next = new ListNode(2);
  51. // node->next->next->next = new ListNode(3);
  52. // node->next->next->next->next = new ListNode(3);
  53.  
  54. Solution s;
  55. s.deleteDuplicates(head);
  56.  
  57. while(head) {
  58. cout << head->val << "->";
  59.  
  60. head = head->next;
  61. }
  62. cout << endl;
  63.  
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0s 4308KB
stdin
Standard input is empty
stdout
1->2->