删除链表中重复的节点
2017-08-14 20:25
239 查看
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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 * p=new ListNode(-1);
p->next=pHead;
ListNode *p1=p;
ListNode *p2=p->next;
while(p2)
{
//找到不相等的位置
while(p2->next!=NULL&&p2->val==p2->next->val)
p2=p2->next;
//如果位置不在下一个,则连接。
if(p1->next!=p2)
{
p2=p2->next;
p1->next=p2;
}
//头结点是空的
else
{
p1=p2;
p2=p2->next;
}
}
return p->next;
}
};
/*
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 * p=new ListNode(-1);
p->next=pHead;
ListNode *p1=p;
ListNode *p2=p->next;
while(p2)
{
//找到不相等的位置
while(p2->next!=NULL&&p2->val==p2->next->val)
p2=p2->next;
//如果位置不在下一个,则连接。
if(p1->next!=p2)
{
p2=p2->next;
p1->next=p2;
}
//头结点是空的
else
{
p1=p2;
p2=p2->next;
}
}
return p->next;
}
};
相关文章推荐
- 删除链表中的重复节点、剩余节点逆序输出
- 【链表】删除链表中连续重复的节点
- 删除单向链表中重复的节点
- 删除链表中重复的节点。
- 剑指offer-----删除链表中重复的节点(java版)
- 链表编程题专题--删除重复节点
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- 剑指Offer—56—删除链表中重复的节点
- 删除无序链表中值重复出现的节点
- 链表循环保留M个节点 然后删除N个节点 重复操作到链表尾部
- 将链表中数据域为key 的节点删除(链表有重复值)
- 删除有序链表中的重复节点
- Python :删除链表中重复的节点
- 剑指offer(59):删除链表中重复的节点
- 剑指offer 57 - 删除链表中重复的节点
- 面试金典--删除未排序链表重复节点
- 删除链表中重复的节点
- 剑指offer之删除链表中重复的节点
- 删除链表中的重复节点
- 删除链表中的重复节点