java裏面沒有指針的說法,因此初始化的時候,就是新建一個null節點就是一個空鏈表了。//C裏面鏈表會有頭指針,頭指針指向頭節點java
若是想向空鏈表插入第一個節點,直接head=newNode;node
注意的狀況是spa
若是想循環鏈表,必定新建一個節點把head考出來,而後遍歷,不能直接用head遍歷指針
/** * Created by Administrator on 2017-10-27. */public class linkedListFuns { public static void main(String[] arg) { Node head = new Node(1); for(int i=2;i<10;i++){ insertFromTail(head,new Node(i)); } printList(head); deleteFromIndex(head,3); printList(head); } static class Node { int data; Node next; public Node(int d) { data = d; next = null; } } //從頭節點插入,比較簡單不用遍歷鏈表 public static void insetFromHead(Node head,Node newNode){ newNode.next=head; head = newNode; } //在尾部插入,要遍歷鏈表 public static void insertFromTail(Node head1, Node newNode){ if(head1 == null){ //若是是個空鏈表,直接把新節點賦值給head,而後結束,要先判斷null的狀況 其實這是一段錯誤代碼,你們能夠查看我另一篇文章,Java參數引用傳遞之例外:null head1 =newNode; return; } Node temp = head1; //用temp代替head去遍歷找到最後一個節點,必定不要用head本身去遍歷,否則就找不到鏈表頭了 while (temp.next!=null){ temp=temp.next; } temp.next=newNode; } //計算鏈表的長度 public static int length(Node head){ int len =0; Node temp = head; while(temp!=null){ len++; temp=temp.next; } return len; } //從特定位置刪除一個節點 public static boolean deleteFromIndex(Node head,int index){ if(index<1||index>length(head)){ //先判斷是否越界 return false; } if(index ==1){//若是是刪除第一個元素,由於直接涉及到了head因此只能單獨處理 head = head.next; return true; } Node curNode = head; for(int curIndex =1;curIndex<index-1;curIndex++){ //刪除順序爲index的node只能將curNode停在index-1的位置 curNode = curNode.next; } curNode.next=curNode.next.next; return true; } //按照順序輸出一個列表 public static void printList(Node head){ Node temp = head; while(temp != null){ System.out.print(temp.data+" "); temp = temp.next; } System.out.println(); } //對鏈表進行冒泡排序 public static void orderList(Node head){ }}