java鏈表的各類操做

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){    }}
相關文章
相關標籤/搜索