时间限制: 1秒 空间限制: 32768K
本题知识点: 链表
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路分析
先创建一个节点,它的下一个节点指向头结点,然后从新头节点开始,判断它的下个节点和下下个节点的值是否相等,相等则要去掉
C#语言
/*
public class ListNode
{
public int val;
public ListNode next;
public ListNode (int x)
{
val = x;
}
}*/
public ListNode DeleteDuplication(ListNode pHead)
{
if (pHead == null || pHead.next == null) return pHead;
ListNode pNode = new ListNode(-1) { next = pHead }, pResult = pNode;
int num = int.MaxValue;
while (pNode.next != null)
{
if (pNode.next.next != null && pNode.next.val == pNode.next.next.val)
{
num = pNode.next.val;
pNode.next = pNode.next.next.next;
continue;
}
if (pNode.next.val == num)
{
pNode.next = pNode.next.next;
continue;
}
pNode = pNode.next;
}
return pResult.next;
}