记录一下java链表的错误和改进
(1)在链表末尾添加一个节点。
错误代码
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;
}
/*错误原因*/
/*最后的listNode为null*/
listNode = new ListNode( 5 );
/*等价于后面的*/
listNode = null;
listNode = new ListNode( 5 );
/*这样不就相当于又new了一个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;
/*其下一个结点设为2*/
listNode.next = new ListNode( 2 );
/*遍历操作*/
while ( listNode.next != null ){
//System.out.print( listNode.val );
listNode = listNode.next;
}
//最后一个不为null的节点
listNode.next = new ListNode( 3 );
while ( head != null ){
System.out.println( head.val );
head = head.next;
}
}