不会显示多个值

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;