当前位置 博文首页 > 墨辰柒的博客:链表的原理代码实现

    墨辰柒的博客:链表的原理代码实现

    作者:[db:作者] 时间:2021-08-03 09:45

    package link;
    
    import java.util.Arrays;
    
    public class MyLinked {
        public Node head=new Node();
        public int size=0;
    
        public  class Node{
            public Object data;
            public Node next;
        }
    
        public void add(Object obj)
        {
            Node node=head;
            while (node.next!=null){
                node=node.next;
            }
            Node newNode=new Node();
            newNode.data=obj;
            node.next=newNode;
            size++;
        }
        public void insert(int index,Object obj){
            Node node=head;
            if (index>size||index<0){
                System.out.println("输入错误!");
            }
            for (int i = 0; i < index; i++) {
                node=node.next;
            }
            Node newNode=new Node();
            newNode.data=obj;
            newNode.next=node.next;
            node.next=newNode;
            size++;
        }
    
        public Object remove(int index){
            Node node=head;
            if (index>size||index<0){
                System.out.println("输入错误!");
            }
            for (int i = 0; i < index; i++) {
                node=node.next;
            }
            Object ob=node.next.data;
            node.next=node.next.next;
            size--;
            return ob;
        }
        public void delete(Object obj){
            Node node=head;
            int count=0;
            for (int i = 0; i <= size; i++) {
                if (node.data!=obj){
                    node=node.next;
                    if (count==size){
                        System.out.println("不正确!");
                        System.exit(0);
                    }
                }
                else {
                    break;
                }
                count++;
            }
            node.next=node.next.next;
            size--;
                /*while (node.next.data!=obj){
                    node=node.next;
                }
                node.next=node.next.next;
                size--;*/
        }
    
        public Object change(int index,Object obj){
            Node node=head;
            if (index>size||index<0){
                System.out.println("输入错误!");
            }
            for (int i = 0; i <= index; i++) {
                node=node.next;
            }
            Object ob=node.data;
            node.data=obj;
            return ob;
        }
        public Object find(int index){
            Node node=head;
            if (index>size||index<0){
                System.out.println("输入错误!");
            }
            for (int i = 0; i <= index; i++) {
                node=node.next;
            }
            return node.data;
        }
        public int size(){
            return size+1;
        }
        public Boolean haveObj(Object obj){
            Node node=head;
            while (node.next.data!=obj){
                node=node.next;
                return true;
            }
            return false;
        }
        public Boolean isEmpty(){
            Node node=head;
            while (node.next.data!=null){
                node=node.next;
                return false;
            }
            return true;
        }
        public void print(){
            Node node=head;
            for (int i = 0; i <= size; i++) {
                System.out.print(node.data+" ");
                node=node.next;
            }
            System.out.println();
    
        }
    
        public String toString(){
            StringBuilder sb=new StringBuilder("[");
            Node node=head.next;
            while (node!=null){
                sb.append(node.data+",");
                node=node.next;
            }
            sb.deleteCharAt(sb.length()-1);
            sb.append("]");
    
    
            return sb.toString();
            //return Node.toString(node.data);
        }
    }
    
    cs