您的位置:首页 > 其它

删除排序链表中的重复元素

2017-03-27 22:24 309 查看
1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。

2.思路:例如给定链表1->1->2->3->3->null,返回1->2->3->null。

             首先要把头指针储存在p中,然后让head不断向后移,直到head的指针域指向空。如果head的指针域指向的数据域等于head的数据域,则说明head与它的下个节点重复,则head的指针域应指向head的下一个节点的指针域,否则head就不断向后移动,直到遍历整个链表。最后返回p的指针域,即最初存储的头指针,即可返回删除重复元素后的链表!

3.代码

/**
* Definition of ListNode
* class ListNode {
* public:
*     int val;
*     ListNode *next;
*     ListNode(int val) {
*         this->val = val;
*         this->next = NULL;
*     }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
ListNode *p=new ListNode(0);
p->next=head;
while(head!=NULL&&head->next!=NULL)
{  if(head->next->val==head->val)
head->next=head->next->next;
else head=head->next;}
return p->next;
}
};


4.感想:一定要对于节点的指针域,数据域还有和下一个节点的关系弄清楚!别糊涂!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: