我不知道为什么display函数不显示除第一个节点的数据之外的任何内容。我已经尝试过将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->下一个p->next=n;按照这个顺序,但无济于事。
在while循环中,它应该是
while (p->next!= NULL) {
p = p->next;
}
p->next = n;
遍历直到到达链表的末尾,然后添加新条目。