在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
解题思路:创建一个头结点。
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public static void main(String[] args) {
//在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
//例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
ListNode pHead1 = new ListNode(1);
ListNode p1=pHead1;
p1.next = new ListNode(2);
p1 = p1.next;
p1.next = new ListNode(3);
p1 = p1.next;
p1.next = new ListNode(3);
p1 = p1.next;
p1.next = new ListNode(4);
p1 = p1.next;
p1.next = new ListNode(4);
p1 = p1.next;
p1.next = new ListNode(5);
Solution s = new Solution();
ListNode l = s.deleteDuplication(pHead1);
while(l!=null){
System.out.println(l.val);
l = l.next;
}
}
public ListNode deleteDuplication(ListNode pHead)
{
if(pHead==null) return pHead;
ListNode Head = new ListNode(0);
Head.next=pHead;
ListNode p3 =Head;
ListNode p2=Head.next;
while(p2!=null){
if(p2.next!=null && p2.val == p2.next.val){
while (p2.next!=null && p2.val == p2.next.val){
p2 = p2.next;
}
p3.next =p2.next;
p2=p2.next;
}else{
p2 = p2.next;
p3 = p3.next;
}
}
return Head.next;
}
}