java實現鏈表作爲存儲結構,實現線性表的插入、刪除、查找、排序、合併等操作

package list;

public class LinkList {
    private Node head;
    //聲明節點
    public class Node{
        private int data;
        private  Node next;
        public Node(){
        }
        public Node(int data){
            this.data = data;
        }
    }
    //打印列表
    public void print(){
        Node p = head;
        while(p.next!=null){
            System.out.print(p.next.data+",");
            p=p.next;
        }
        System.out.println(" ");
    }
    //傳一個數組進來來創建鏈表
    public LinkList(int[]a){
        head = new Node();
        Node p = head;
        int i =0;
        while(i<a.length){
            Node temp = new Node(a[i]);
            p.next = temp;
            p = p.next;
            i++;
        }
        print();
    }
    //刪除
    public void delete(int index){
        Node p = head.next;
        int i =0;
        while(i<index) p=p.next;

    }
    //插入元素
    public void insert(int value,int index){
        int i=0;
        Node p = head;
        while(i<index){
            p=p.next;
            i++;
        }
        Node temp = new Node(value);
        temp.next=p.next;
        p.next=temp;
        print();
    }
    //查找元素
    public int get(int index){
        int i=0;
        Node p = head.next;
        while(i<index){
            i++;
            p=p.next;
        }
        System.out.println(p.data);
        return p.data;
    }
    //排序,使用選擇排序
    public void sort(){
        if (head==null || head.next==null){
            return ;
        }else {
            System.out.println("執行排序");
            Node newHead = new Node();
            Node pn = newHead;
            while(head.next!=null){
                //表示最小值所在的節點
                Node min = head.next;
                //表示最小值所在的節點的前一個節點
                Node pre = head;
                Node p = head.next;
                //找到最小值節點
                while(p.next!=null){
                    if(min.data<p.next.data){
                        pre = p;
                        min = p.next;
                    }
                    p=p.next;
                }
                //將min提取出來
                pre.next = min.next;
                pn.next = min;
                pn = pn.next;
            }
            head=newHead;
        }
        print();
    }

    public void caoncat(LinkList a){
        Node p = head;
        while(p.next!=null) p = p.next;
        p.next=a.head.next;
        print();
    }

    public static void main(String [] args){
        int a[] = {8,7,6,5,4,3,2,1};
        int b[] = {9,10,11,12,13};
        //使用數組初始化一個鏈表
        LinkList list = new LinkList(a);
        LinkList lb = new LinkList(b);
        //插入元素
        list.insert(12,3);
        list.get(0);
        list.caoncat(lb);
        list.sort();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章