为什么输入数据输出不了东西,应该怎么修改


package DateStructuresHomework;

import homework.F;

public class SingleLinkedList {
    private Node head=new Node("");
    public void insert(Node Node)
    {
        Node temp=head;
        while (true)
        {
            if (temp.next==null)
                break;
            temp=temp.next;

        }
        temp.next=Node;
        display();


    }
    public void delete(int no)
    {
        Node temp=head;

        for (int i = 0; i next;
        }
        temp.next=temp.next.next;
        display();
    }
    public void find(Object x)
    {
        Node temp=head;
        int n=0;
        while (temp.next==null)
        {
            if (temp.val==x)
            {

                break;
            }
            n++;
        }
        System.out.println(n);
    }
    public void display()
    {
        Node temp=head;
        while (temp.next==null)
            System.out.print(temp.val+" ");
    }





}

class Node{
    public Object val;
    public Node next;


    public Object getVal() {
        return val;
    }

    public void setVal(Object val) {
        this.val = val;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }

    public Node(Object val) {
        this.val = val;
    }
}





class Test2
{
    public static void main(String[] args) {
        Node node1=new Node(1);
        Node node2=new Node(2);
        SingleLinkedList singleLinkedList=new SingleLinkedList();
        singleLinkedList.insert(node1);
        singleLinkedList.insert(node2);
        singleLinkedList.display();
    }
}

img

可参考:https://blog.csdn.net/qq_69133469/article/details/124312857https://blog.csdn.net/u011723409/article/details/125456921

import java.util.Scanner;

public class SingleLinkedList<T> {
    //结点定义
    private class Node{
        //数据
        T item;
        //指向下一个结点
        Node next;
        //构造器
        public Node(T item,Node next){
            this.item = item;
            this.next = next;
        }
        public Node(T item){
            this.item = item;
        }
    }
    //头结点
    private Node head;
    //尾结点
    private Node tail;
    //结点个数
    private int size;

    //链表定义
    public SingleLinkedList(){
        this.head = new Node(null,null);
        size = 0;
    }

    //查找特定位置的链表结点
    public Node get(int index) {
        if (index <0 || index >=this.size){
            return null;
        }else{
            Node temp = this.head;
            for(int i =1; i<= index; i++){
                temp = temp.next;
            }
            return temp;
        }
    }

    public void add(T data){
        Node temp = new Node(data);
        //链表为空时
        if (this.size == 0){
            head = temp;
            tail = head;
        }else{
            Node last  =  tail;
            last.next = temp;
            this.tail = temp;
        }
        this.size ++;
    }

    //在链表的第i个位置插入一个值为t数据
    public void insert(int index ,T data) throws Exception{
        if(index <0 ||index > this.size){
            throw new Exception("插入超出范围");
        }else{
            Node newNode = new Node(data);
            //在头结点插入元素
            if (index ==0){
                if(this.size >0){
                    Node temp = head;
                    newNode.next = temp;
                }
                head = newNode;
            }
            //在尾结点插入元素
            else if(index == this.size){
                Node temp = tail;
                temp.next = newNode;
                this.tail  = newNode;

            }else{
                //在中间插入元素
                Node preNode = get(index-1);
                Node nextNode = preNode.next;
                newNode.next = nextNode;
                preNode.next = newNode;

            }

        }
        this.size ++;

        if(size == 1){
            tail = head;
        }
    }

    //删除特定位置的数据
    public void del(int index )throws Exception{
        if (index <0 ||index >=this.size){
            throw new Exception("删除超出范围");
        }else{
            //删除头结点
            if (index == 0){
                Node temp = this.head.next;
                this.head = temp;

            }else if(index == this.size-1){    //删除尾结点
                Node preNode = get(index -1);
                this.tail = preNode;
                preNode.next = null;
            }else{
                //删除中间结点
                Node preNode = get(index -1);
                Node nextNode = preNode.next.next;
                preNode.next = nextNode;
            }

        }
        this.size --;

    }

    public void printLinkList(){
        if(this.size ==0){
            System.out.println("链表为空");
        }
        else {
            Node temp = head;
            System.out.print("目前的列表,头结点:" + head.item + ",尾结点:" + tail.item + ",整体:");
            while (temp != null) {
                System.out.print(temp.item + ",");
                temp = temp.next;
            }
            System.out.println();
        }

    }

    public static void main(String args[]) throws Exception {
        SingleLinkedList linkList = new SingleLinkedList();
        int[] numbers = new int[20];
        Scanner scanner = new Scanner(System.in);
        int num, i = 0;
        while(scanner.hasNextInt())
        {
            num = scanner.nextInt();
            if (num != 0)
            {
                numbers[i] = num;
                i++;
            }else{
                break;
            }
        }
        System.out.println(i);
        for(int j=i-1; j>=0; j--)
        {
            System.out.println(numbers[j]);
            linkList.add(numbers[j]);
        }
        linkList.printLinkList();
        
        // 在指定索引插入值
        int index_insert, insert_val;
        Scanner scanner1 = new Scanner(System.in);
        index_insert = scanner1.nextInt();
        insert_val = scanner1.nextInt();
        linkList.insert(index_insert, insert_val);
        linkList.printLinkList();
        
        // 删除指定索引位置的值
        int del_index;
        del_index = scanner1.nextInt();
        linkList.del(del_index);
        linkList.printLinkList();
        
        // 获取指定索引位置的值
        int find_index;
        find_index = scanner1.nextInt();
        int result = (int) linkList.get(find_index).item;
        System.out.println(result);
    }
}