天天看點

Java實作連結清單結構

尾插法單項連結清單及周遊:
import java.util.Random;
public class mylinked {
    public static void main(String[] args) {
        mylinked mylinked=new mylinked();
      mylinked.print(mylinked.creat(6));
    }
 
 //        分别存儲下一個節點位址和資料
    public mylinked next;
    public int data;
    public mylinked header,tailer,newcode;
    public  mylinked creat (int len) {
        Random random=new Random();
//        定義頭尾和新節點,且初值為空
        mylinked header,tailer,newcode;
        header=tailer=newcode=null;
        for (int i = 0; i <len; i++) {
//            初始化新節點
            newcode=new mylinked();
//            指派
            newcode.data=random.nextInt(100);
            if(header==null){
                header=tailer=newcode;
            }else{
                tailer.next=newcode;
                tailer=newcode;
            }
 
        }
    return header;
    }
 
    public void print(mylinked header){
        while(header!=null){
            System.out.println(header.data);
            header=header.next;
        }
 
 
    }
 
}      

 頭插法單向連結清單結構:

import java.util.Random;

public class mylink {

   //建立連結清單類

   class MLink {

       //當Mlink執行個體化後形成一個連結清單的節點對象

       //節點對象中的屬性

       //節點存儲的屬性

       private int data;

       //存儲下一個連結清單節點位址的屬性

       private 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;

               }

           }

           return header;

       }

   }

}

雙向連結清單及周遊:

public class mylinked {
    public static void main(String[] args) {
        mylinked mylinked=new mylinked();
        mylinked.print(mylinked.creat(6));
    }
 
//        分别存儲下一個節點位址和資料
    public mylinked next;
    private mylinked last;
    public int data;
    public mylinked header,tailer,newcode;
    public  mylinked creat (int len) {
        Random random=new Random();
//        定義頭尾和新節點,且初值為空
        mylinked header,tailer,newcode;
        header=tailer=newcode=null;
        for (int i = 0; i <len; i++) {
//            初始化新節點
            newcode=new mylinked();
//            指派
            newcode.data=random.nextInt(100);
            if(header==null){
                header=tailer=newcode;
            }else{
//                新節點的上一個等于尾節點,尾節點的下一個值等于新節點
                newcode.last=tailer;
                tailer.next=newcode;
                tailer=newcode;
            }
        }
    return header;
    }
    public void print(mylinked header){
        while(header!=null){
            System.out.println(header.data);
            header=header.next;
        }
 
 
    }
 
}