您的位置:首页 > 其它

删除链表中重复的结点

2016-04-15 20:17 369 查看
题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。

/**
* 删除链表中重复的结点
*
* @author 过路的守望
*
*/
public class DuplicationNode {

public ListNode deleteDuplicateNode(ListNode head){
//节点为空或者只有一个节点,直接返回本节点
if(head == null||head.next == null){
return head;
}
//新建一个节点指向头结点
ListNode preListNode = new ListNode(-1);
ListNode pre = preListNode;
//指向当前节点
ListNode cur = head;
while(cur != null){
//判断相邻节点值是否相等
if(cur.next != null&&cur.val == cur.next.val){
int value = cur.val;
cur = cur.next.next;
while(cur!= null&&cur.val == value){
cur = cur.next;
}
preListNode.next = cur;
}else{
preListNode.next = cur;
preListNode = preListNode.next;
cur = cur.next;
}
}
return pre.next;
}

}
/**
*
* 链表类
*
*/
class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: