[leetcode]83. Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.

Example 1:

Input: 1->1->2
Output: 1->2

分析:

删除排好序的链表中重复的项。若链表为空或者只有一个元素,直接返回;否则定义一个结点,从头开始遍历,依次比较相邻结点的值,若相等,删除其中一个结点即可;否则跳到下一结点,继续比较。
 

/**
 * 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 || !head->next)
            return head;
        ListNode* h1 = head;//定义指针指向第一个元素
        while(h1 && h1->next)
        {
            if(h1->val == h1->next->val)
            {
                ListNode* tmp = h1->next;
                h1->next = h1->next->next;
                delete tmp;
            }
            else
                h1 = h1->next;
        }
       return head; 
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_41814716/article/details/84024191