Java 中的自定义链表

Custom Linked List in Java

我正在尝试实现我自己的 LinkedList class,它可以添加和删除节点。我面临的唯一问题是,当我尝试打印链表的所有节点时,由于我的 while 循环,我无法打印最后一个节点。我不知道如何删除这个 bug/error.

public class LinkedList {
    private Node head;

    public static void main(String[] args) {
        LinkedList list = new LinkedList();

        list.insert(5);
        list.insert(10);
        list.insert(13);
        list.insert(15);
        list.insert(20);

        list.show();

        list.delete(13);
        list.show();
    }

    public void insert(int val) {
        Node node = new Node(val);
        node.next = null;
        if (head == null) {
            head = node;
        } else {
            Node temp = head;
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = node;
        }
    }

    public void delete(int val) {
        Node temp = head, prev = null;

        if (temp != null && temp.val == val) {
            head = temp.next;
            return;
        }

        while (temp != null && temp.val != val) {
            prev = temp;
            temp = temp.next;
        }
        if (temp == null) return;
        
        prev.next = temp.next;
    }

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

    private class Node {
        Node next;
        int val;

        private Node(int val) {
            this.val = val;
        }
    }

}

根据您的代码,我只关注您的 show() 方法,因此您可以像这样更改:

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

这可以通过调试器轻松捕获。我希望这会帮助你。 更多请告诉我。