仅打印链表的第一个值



我不知道为什么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;

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

相关内容

  • 没有找到相关文章

最新更新