为什么我的链表只打印一个值?

asv*_*672 0 c++ data-structures singly-linked-list

我创建了一个链接列表,但它只打印第一个值“1”,而不打印其余的值。我有一个插入函数来插入新节点,然后有一个显示函数来打印节点值,但它只打印第一个值。

struct Node {
    int n;
    Node *next;

};

class LinkedList {
    private:
        Node *head;
        Node *tail;
    
    public:
        LinkedList() {
            head = NULL;
            tail = NULL;
        }
        ~LinkedList(){};

        void insert_node(int value) {
            Node *new_node = new Node();
            new_node->n = value;
            new_node->next = NULL;

            if (head == NULL) {
                head = new_node;
                tail = new_node;
            }
            else {
                tail = new_node;
                tail->next = new_node;
            }
        }

        void show() {
            Node *new_node;
            new_node = head;

            while (new_node != NULL) {
                cout << new_node->n << endl;
                new_node = new_node->next;
            }
        }

};

int main() {

    LinkedList L;

    L.insert_node(1);
    L.insert_node(2);
    L.insert_node(4);
    L.insert_node(8);
    L.show();

}
Run Code Online (Sandbox Code Playgroud)

Mik*_*CAT 5

线条

                tail = new_node;
                tail->next = new_node;
Run Code Online (Sandbox Code Playgroud)

方法

                new_node->next = new_node;
                tail = new_node;
Run Code Online (Sandbox Code Playgroud)

因此,不会创建从head到 的链接。new_node

这些行应该是:

                tail->next = new_node;
                tail = new_node;
Run Code Online (Sandbox Code Playgroud)

首先创建到新节点的链接,然后更新尾指针。