java 建立連結串列,使用尾插法和頭插法
阿新 • • 發佈:2019-01-11
1。尾插法
工作原理:
建立一個類MyLinked設定一個儲存連結串列資料的屬性int data,在設定儲存連結串列內下一個資料節點的屬性MyLinked next.
定義一個建立連結串列的方法,定義head永遠儲存第一個節點地址,storage永遠儲存最後一個地址,last儲存每次迴圈產生的臨時節點地址,建立資料給data,建立新地址給storage。next做拼接storage接受當前地址作為最後一個地址儲存。
程式碼實現:
import java.util.Random; public class MyLinked { int data; //建立一個數組的屬性 MyLinked next; //建立一個儲存下一個節點的屬性 public MyLinked ceate(int len) { Random r = new Random();//隨機物件 MyLinked head,storage,last; //定義三個物件,head 為 永遠儲存第一個節點的地址 //storage 為 永遠儲存最後一個節點的地址 //last 為 新的臨時節點 head = storage = last = null; for (int i = 0; i <len ; i++) { int temp = r.nextInt(50); last = new MyLinked();//建立一個新的臨時節點 last.data = temp; //為屬性賦值 if (head ==null){ //判斷連結串列是否是第一次賦值 head = storage = last; }else { storage.next = last;//將新節點連線到連結串列的尾部 storage = last; //永遠的儲存最後一個節點的地址 } } return head; } public static void main(String[] args) { MyLinked my = new MyLinked();//引用 MyLinked ww = my.ceate(10);//將隨機的數值賦值給ww for (int i = 0; i <10 ; i++) { System.out.print(ww.data+" ");//列印第一個數的值; ww = ww.next;//將下一個數my.next值賦給xx後,下一輪xx.data就相當於這個數的值; } } }
————————————————————————————————————————————————————————2。頭插法
程式碼實現:
import java.util.Random; //建立連結串列類 頭插法 class MLink{ //當Mlink例項化後形成一個連結串列的節點物件 //節點物件中的屬性 //節點儲存的屬性 public int data; //儲存下一個連結串列節點地址的屬性 public MLink next; /** * 功能:建立一個連結串列,並返回頭節點的地址 * @param len 建立連結串列資料的長度 * @return 返回頭節點的地址 */ public MLink create(int len){ MLink header=null; //建立隨機物件 Random ra=new Random(); //生成指定長度的隨機數 for (int i = 0; i <len ; i++) { //建立隨機數 int num=ra.nextInt(100); //建立一個節點物件 MLink temp=new MLink(); //儲存資料 temp.data=num; //是否第一次建立連結串列節點 if(header==null) header=temp; else{ temp.next=header; header=temp; } } return header; } /** * 遍歷整個連結串列 * @param header 連結串列中第一個節點的地址 */ public void show(MLink header){ while(header!=null){ System.out.print(header.data+" "); //遍歷下一個節點 header=header.next; } } } public class Demo01 { public static void main(String[] args) { //建立連結串列物件 MLink link=new MLink(); //建立一個連結串列,並返回第一個節點的地址 MLink header=link.create(8); //遍歷建立的連結串列 link.show(header); } }