不会显示多个值
Won't display more than one value
本文关键字:显示 更新时间:2023-10-16
没有
错误,但我期待 10 个值,但我只得到了一个。以下是我的创建和显示功能。
void create()
{
int random;
for (int i = 0; i < 10; i++)
{
struct node *new_node, *current;
new_node = new node;
random = randomNum();
new_node->data = random;
new_node->next = NULL;
if (start == NULL)
{
start = new_node;
current = new_node;
new_node = NULL;
}
else
{
current->next = new_node;
current = new_node;
}
}
}
void display()
{
struct node *new_node;
new_node = start;
while (new_node != NULL)
{
cout << new_node->data << "->";
new_node = new_node->next;
}
}
我需要更改什么?
尝试以下行
current = new_node;
current->next = new_node;
因为在你的情况下,current
指针没有值,所以你怎么能更新它的下一个。首先更新/设置当前,然后更新/设置下一个。
if (start == NULL)
{
start = new_node;
current = new_node;
current->next = NULL;
new_node = NULL;
}
else
{
current = new_node;
current->next = new_node;
}
编译器消息的问题在于编译器无法确定 else 语句中使用的变量current
是否提前初始化。
如果这是一个警告,你可以忽略它。
或者您可以通过以下方式重写函数
void create()
{
const int N = 10;
node **current = &start;
while ( *current ) current = &( *current )->next;
for ( int i = 0; i < N; i++ )
{
*current = new node;
( *current )->data = randomNum();
( *current )->next = nullptr;
current = &( *current )->next;
}
}
for 循环的主体也可以写成(我假设数据成员data
在节点定义中的数据成员next
之前。否则交换初始值设定项。
*current = new node { randomNum(), nullptr };
current = &( *current )->next;
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 密码登录程序将永远循环并显示不正确的结果
- std::strftime 在 Windows 中使用 GMTIME 将时区 UTC 显示为 UTC+1