打印单向链表
Printing the singly linked list
我是编程新手 在这里,我编写了一个使用链表接受和显示值的代码。 但是,代码采用所有值,但仅显示最后一个值 这是代码
#include <iostream>
using namespace std;
struct node {
int value;
node* next;
};
class llist {
public:
void create();
void display();
node* head = NULL;
};
void llist::create()
{
struct node* temp;
temp = NULL;
struct node* p;
p = new struct node;
cin >> p->value;
if (head == NULL) {
head = p;
}
else {
temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->value = p->value;
temp->next = NULL;
}
}
void llist::display()
{
struct node* temp = head;
while (temp != NULL) {
cout << "VALUE:" << temp->value << endl;
temp = temp->next;
}
}
int main()
{
int n, i;
llist l1;
cin >> n;
for (i = 0; i < n; i++)
l1.create();
cout << "Displaying listn";
l1.display();
return 0;
}
输入:41
2 3
4
显示
列表
值:4
我想知道出了什么问题...
更改以下内容:
else {
temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->value = p->value;
temp->next = NULL;
}
对此:
else {
temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = p;
}
在链表末尾插入新元素时,您会在 while 循环中找到最后一个元素并将其放入temp
变量中。然后,将其next
值分配给新的p
元素。就像你以前做的那样,你只是覆盖了最后一个元素的整数。这就是为什么当您打印列表时,您只得到您输入的最后一个数字。
另外,在创建新元素p
时,请务必将其next
值初始化为NULL
:
p = new struct node;
p->next = NULL;
问题出在 else 块中的最后 2 行。 您将覆盖该值并仅维护列表类中的单个模式。这就是原因,只显示最后一个值。 取代
temp->value = p->value;
temp->next = NULL;
跟
temp->next = p;
相关文章:
- 打印所有链表的元素 (C++)
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 打印功能无法正常工作 - 链表
- 使用链表数据结构打印多项式
- 为什么我的打印功能不起作用?链表
- 我的链表没有按预期打印出来?
- 打印循环链表
- 使用类进行实现时,递归打印C++中的链表
- C++ 链表程序打印最后一个数据项 n 次
- 打印单向链表
- 双向链表未正确打印值
- 为什么我的C++代码在以下打印链表的代码片段中显示分段错误?
- 链表打印意外值
- C++ 链表打印崩溃
- C++ 链表打印错误
- C++双链表打印
- 对链表打印函数的未定义引用
- c++链表打印…我得到了一个无限循环
- 链表打印问题