[剑指offer]删除链表中重复的结点

来源:互联网 发布:php重庆好找工作吗 编辑:程序博客网 时间:2024/05/29 17:23

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

分析:新建一个头节点,把不重复的节点加在尾指针后面。

代码:

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :        val(x), next(NULL) {    }};*/class Solution {public:    ListNode* deleteDuplication(ListNode* pHead)    {if(pHead==NULL||pHead->next==NULL) return pHead;        ListNode* n=new ListNode(-1);        n->next=pHead;        ListNode* p=pHead;        ListNode* last=n;        while(p!=NULL&&p->next!=NULL){            if(p->val==p->next->val){                int temp=p->val;                while(p!=NULL&&p->val==temp){                    p=p->next;                }                last->next=p;            }else{                last=p;                p=p->next;            }                    }        return n->next;    }};


0 0
原创粉丝点击