記錄一下java鏈表的錯(cuò)誤和改進(jìn)
(1)在鏈表末尾添加一個(gè)節(jié)點(diǎn)苏揣。
錯(cuò)誤代碼
public static void main(String[] args) {
ListNode head;
ListNode listNode = new ListNode(1);
head = listNode;
ListNode index = listNode;
while ( listNode != null ){
index.next = new ListNode( listNode.val );
System.out.println( listNode.val );
listNode = listNode.next;
}
/*錯(cuò)誤原因*/
/*最后的listNode為null*/
listNode = new ListNode( 5 );
/*等價(jià)于后面的*/
listNode = null;
listNode = new ListNode( 5 );
/*這樣不就相當(dāng)于又new了一個(gè)listNode嗎?*/
}
正確代碼
public ListNode listNode;
/*用來指向鏈表的頭部册养,不能輕易破壞*/
public ListNode head;
/*初始化鏈表*/
public void init( ListNode listNode ){
head = listNode;
}
/*添加鏈表*/
public void add(){
}
/*遍歷鏈表*/
public void visit(){
}
public static void main(String[] args) {
ListNode head;
ListNode listNode = new ListNode(1);
/*指向其頭部的鏈表*/
head = listNode;
/*其下一個(gè)結(jié)點(diǎn)設(shè)為2*/
listNode.next = new ListNode( 2 );
/*遍歷操作*/
while ( listNode.next != null ){
//System.out.print( listNode.val );
listNode = listNode.next;
}
//最后一個(gè)不為null的節(jié)點(diǎn)
listNode.next = new ListNode( 3 );
while ( head != null ){
System.out.println( head.val );
head = head.next;
}
}