只打印链表的第一个值

Only Printing the First Value of Linked List

我不知道为什么显示功能不显示第一个节点数据以外的任何内容。我已经尝试将 While(p!=NULL) 切换为 while(p->next!= NULL 但是当我这样做时,而不是仅显示第一个节点的数据,没有显示任何数据。

#include <iostream>

using namespace std;

class Node {
public:
    int no;
    Node* next;

};


Node* createNode(int no1) {
    Node* n = new Node();
    n->no = no1;
    n->next = NULL;
    return n;
}


void addValue(int x, Node** head) {
    //insert first node into linked list

    Node* n = createNode(x),*p = *head;

        if (*head == NULL) {
            *head = n;
            
        }
        

    //insert second node onwards into linked list
    else {
    
            while (p->next!= NULL) {
                p->next = n;
                p = p->next;

            }

    }
}

void display(Node *head) {
    Node* temp = head;
    // temp is equal to head
    while (temp->next!=NULL) {
        cout << temp->no;
        temp = temp->next;
    }
}


int main() {
    int num; char choice;

    Node* head = NULL;

    do {
        cout << "Enter a number : ";
        cin >> num;
        addValue(num,&head);
            cout << "Enter [Y] to add another number : ";
        cin >> choice;
    } while (choice == 'Y');

    cout << "List of existing record : ";
    display(head);
    return 0;
}

我尝试将 addRecord 函数中 else while 循环的内容更改为 p = p->next; p->下一个=n;按此顺序无济于事。

在while循环中,应该是

while (p->next!= NULL) {
  p = p->next;
}

p->next = n;

遍历到链表的末尾,然后添加新条目。