Java implements linked list as a storage structure, and implements operations such as insertion, deletion, search, sorting, and merging of linear lists

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();
    }
}

 

Guess you like

Origin blog.csdn.net/qq_20176001/article/details/91358579