1. 程式人生 > >leetcode-83-Remove Duplicates from Sorted List

leetcode-83-Remove Duplicates from Sorted List

節點 sort listnode 內存 sorted val 內存空間 spa appear

題目描述:

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.

要完成的函數:

struct ListNode

{
  int val;
  ListNode *next;
  ListNode(int x) : val(x), next(NULL) {}
};

ListNode* deleteDuplicates(ListNode* head)

說明:

這道題目不難,考察的是對於指針的簡單操作。要註意的點如下:

1、head指針指的是第一個節點指針。這個指針有可能為NULL,沒有指向任何內存空間,因此談不上有val和next。也有可能指向一個ListNode的變量空間,有val和next的。

2、註意要釋放重復的節點空間,不然會造成內存泄漏.

代碼:

ListNode* deleteDuplicates(ListNode* head) 
{
  ListNode
* t1=head,*t2; if(head==NULL)//空指針特殊處理   return head; while(t1->next!=NULL)//當下一個節點仍然有val的時候繼續處理 {
    t2
=t1->next; if(t2->val==t1->val) {
      t1
->next=t2->next; delete t2; } else t1=t2;
  }
  return head;
}

leetcode-83-Remove Duplicates from Sorted List