1. 程式人生 > >java--刪除鏈表偶數節點

java--刪除鏈表偶數節點

tno sys 刪除 pub amp clas ++ list 當前

public class ListNode {
int data;//當前節點的值
ListNode next = null;//是指向下一個節點的指針/引用
public ListNode(int data){
this.data = data;
}
}

public class DeleteListNode {
public static ListNode delete(ListNode head){
//鏈表為空
if(head == null){
return null;
}
ListNode odd = head;
//鏈表長度為偶數
if(length(head)%2 == 0){
while (odd.next != null && odd.next.next != null){

odd.next = odd.next.next;
odd = odd.next;
if(odd.next.next == null && odd.next != null){
odd.next=null;
}
}
}
//鏈表長度為奇數
if(length(head)%2 == 1){
while (odd.next != null && odd.next.next != null){
odd.next = odd.next.next;
odd = odd.next;
}
}
//返回頭結點
return head;

}

//返回鏈表長度
private static int length(ListNode node){

int length = 0;
while (node != null){
node = node.next;
length++;
}
return length;
}
//打印鏈表
private static void print(ListNode node) {
System.out.print(node.data);
if (node.next != null){
print(node.next);
}
}

public static void main(String[] args){
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
ListNode node6 = new ListNode(6);
ListNode node7 = new ListNode(7);
ListNode node8 = new ListNode(8);
ListNode node9 = new ListNode(9);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
node6.next = node7;
node7.next = node8;
node8.next = node9;
System.out.println("刪除偶數節點前,鏈表為:");
print(node1);
delete(node1);
System.out.println("\n刪除偶數節點後,鏈表為:");
print(node1);
}


}

java--刪除鏈表偶數節點