剑指offer--删除重复节点

package 删除重复节点;




/*需要两个指针,一个指向前一个节点preNode,另一个指向当前节点node,
 * 如果遇到相等的节点,node向后移动,preNode不动,存下node.val方便后面的比较,
 * 直到遇到node和node.next不相等,preNode就可以指向node.next
 注意:链表开头可能就开始有重复的节点,
所以默认preNode=null,在后面的给preNode赋值的时候,
若preNode为null,那就把pHead设置为node.next
*/
public class Problem18 {


public static void main(String[] args) {
ListNode node1=new ListNode();
ListNode node2=new ListNode();
ListNode node3=new ListNode();
ListNode node4=new ListNode();
ListNode node5=new ListNode();
ListNode node6=new ListNode();
ListNode node7=new ListNode();
node1.date=1;
node2.date=2;
node3.date=3;
node4.date=3;
node5.date=4;
node6.date=4;
node7.date=5;
node1.nextNode=node2;
node2.nextNode=node3;
node3.nextNode=node4;
node4.nextNode=node5;
node5.nextNode=node6;
node6.nextNode=node7;
Problem18 problem18=new Problem18();
ListNode nListNode=problem18.delListNode(node1);
System.out.println(nListNode.date);
}
public static ListNode delListNode(ListNode headNode){

ListNode preNode=null;
ListNode node=headNode;
while(node!=null){
if(node.nextNode!=null&&node.date==node.nextNode.date){
int value=node.date;
while(node.nextNode!=null&&node.nextNode.date==value){
node=node.nextNode;
}
if(preNode==null){
headNode=node.nextNode;
}else{
headNode.nextNode=node.nextNode;
}
}else{
headNode=node;
}
node=node.nextNode;
}
return headNode;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章