1. 程式人生 > 其它 >陣列轉化為單向連結串列再順序新增

陣列轉化為單向連結串列再順序新增

技術標籤:演算法連結串列資料結構演算法java

public class SingListNode {
    //連結串列類
        int val;
        SingListNode next;
        public SingListNode(int val) {
            this.val = val;
        }

}
public class SingListNodeInser {
    SingListNode root ;
    /*
    將陣列轉化為連結串列
     */
    public SingListNode arrayToListNode
(int[] arr){ //生成連結串列的根節點,並將陣列的第一個元素的值賦給連結串列的根節點 SingListNode root = new SingListNode(arr[0]); SingListNode other = root; //other作為臨時變數 for (int i = 1;i<arr.length;i++){ //從1開始遍歷陣列 SingListNode temp = new SingListNode(arr[i]);//每迴圈一次生成一個新的節點 other.next =
temp; //將other的下一個節點指向生成的新節點 other = temp; //other為臨時變數,指向當前節點 // if(i==arr.length-1){ // temp.next = null; // } } this.root = root; return root; } /* 將元素插入連結串列 */ public void addnode(SingListNode node){ SingListNode temp =
root; //臨時變數 if (root.next == null){ root.next = node; System.out.println("到尾了"); return; } while (temp.next!=null&&temp.next.val<node.val){ temp = temp.next; //往下遍歷下一個節點 } if (temp.next == null){//到連結串列尾 temp.next = node; node.next = null; }else { node.next = temp.next; temp.next = node; } System.out.println("節點"+node.val+"插入成功"); } /* 遍歷連結串列 */ public void printListNode(){ SingListNode temp = root; while (temp!=null){ System.out.print(temp.val+" "); temp = temp.next; } } }
public class test09 {
    public static void main(String[] args) {
        int[] arr = {1,3,5,6,7,8};
        SingListNodeInser singListNodeInser = new SingListNodeInser();
        SingListNode listNode = singListNodeInser.arrayToListNode(arr);
        singListNodeInser.addnode(new SingListNode(8));
        singListNodeInser.addnode(new SingListNode(2));
        singListNodeInser.addnode(new SingListNode(77));
        singListNodeInser.printListNode();
    }
}

結果:
在這裡插入圖片描述