劍指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;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章