题目要求
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针
示例:
输入:1->2->2->3->4->4->5
输出:1->3->5
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
解题思路
方法:
给三个指针 cur,next,prev,cur 指向第一个结点,若后移过程与 next 相等,删除 next 后 cur 再后移,直至 cur 与 next 不相等时,删除 cur ,cur 后移,prev 后移,next 后移,重新链接 prev 和新 cur,若后移过程中,cur 与 next 不相等,next、cur、prev 后移
解题演示
输入:1->2->2->3->4->4->5
输出:1->3->5
过程显示:
- cur 、prev、next 在开始时指向如图所示