gpt4 book ai didi

c++ - 使用循环将随机数添加到链表中

转载 作者:行者123 更新时间:2023-11-28 02:53:54 25 4
gpt4 key购买 nike

我想将一个完全随机的数字添加到链表中,但我不想将所有代码都放在 main 中,而是想使用面向对象的方法。我有我的标准 Node 类和它的标题,然后在 main 中我想要一个循环运行 20 次然后停止添加更多。我得到了我的插入函数以及如何在 main 中调用它,但我似乎无法让随机数起作用。我知道你不能将一个 int 分配给一个类,但我真的不知道如何将我的随机数合并到我的函数中以便将它插入我的列表中。

这是我的代码。观察 main 的第 20 行的错误。任何见解都会很棒。谢谢!

main.cpp

#include <iostream>
#include <iomanip>
#include <time.h>
#include "Node.h"

using namespace std;

int main()
{
srand(time(NULL));

Node link_head;
Node instance;

for (int i = 0; i < 20; i++)
{
int random = rand() % 100;

instance.insert(&link_head, &random);
}
}

节点.h

#include <iostream>
#include <iomanip>

#ifndef NODE_H
#define NODE_H

typedef int ElementType;

class Node
{
public:

Node();
ElementType data;
Node *next;
int insert(Node *, Node *);

};

#endif NODE_H

节点.cpp

#include <iomanip>
#include <iostream>
#include "Node.h"

using namespace std;

Node::Node()
{
this -> data = 0;
this -> next = NULL;
}

int Node::insert(Node *link_head, Node *newNode)
{
Node *current = link_head;

while (true)
{
if(current->next == NULL)
{
current->next = newNode;
break;
}
current = current->next;
}

return 0;
}

最佳答案

您正在将一个 int 的地址发送到一个需要节点指针的函数。先分配一个新节点,然后将其发送给函数。

for (int i = 0; i < 20; i++)
{
int random = rand() % 100;

Node* newNode = new Node;
newNode->data = random;
instance.insert(&linkHead, newNode);
}

如前所述,插入方法实际上应该是静态的,即使是自由函数也是如此,因为它只访问结构的公共(public)成员。

关于c++ - 使用循环将随机数添加到链表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com