gpt4 book ai didi

c++ - 顾问/学生树 c++

转载 作者:行者123 更新时间:2023-11-28 00:59:51 26 4
gpt4 key购买 nike

我正在尝试为学校编写程序,但不知道从哪里开始。

我不太擅长指针,所以我有点困难。

到目前为止的代码(已更新):

#include<iostream>
#include<vector>
#include<string>
using namespace std;

struct node
{
string name;
node * parent;
vector<node*> children;
};

int main()
{
vector<node*> dataBase;
node *advisor, *student, *student2;
advisor = new node;
student = new node;
student2 = new node;

cin>>advisor->name>>student->name>>student2->name;

advisor->children.push_back(student);
advisor->children.push_back(student2);
dataBase.push_back(advisor);

for(int i=0; i<dataBase.size(); i++)
{
cout<<dataBase[i]->name<<endl;
for(int j=0; j<dataBase[i]->children.size(); j++)
{
cout<<dataBase[i]->children[i]->name<<endl;
}
}

system("pause");
return 0;
}

我想做的是获取两个名字的输入,然后将其存储在数据库中。

例如,第一个名字永远是顾问,第二个名字永远是学生。

我知道如何在纸上做到这一点,只是不知道如何使用代码..所以我正在寻找一些示例/提示。

例子:

输入:

约翰·史蒂文

约翰·巴里

约翰·哈罗德

输出:

顾问:约翰

学生:史蒂文、巴里、哈罗德

我希望我的程序获取 John 并将他放入 vector 数据库的第一个条目中,然后我想要获取 Steven Barry 和 Harold 并将它们全部放入 vector 子项中。

无论如何,我知道我应该像一棵树一样来做这件事,顾问是 parent ,学生是树的 child 。

欢迎任何帮助/建议。谢谢。

编辑 #1:现在我无法将更多学生添加到一位顾问。

最佳答案

您永远不会添加到 vector 中。 vector 需要先添加元素,然后才能使用 [] 运算符为其添加索引。

改变

dataBase[0]=advisor;
advisor->children[0]=student;

advisor->children.push_back(student);
dataBase.push_back(advisor);

要打印学生,您可以在 for 循环中访问 children 变量,其方式与打印顾问姓名的方式完全相同。

for(int i=0; i<dataBase.size(); i++)
{
cout<<dataBase[i]->name<<endl;
for(int j=0; j<dataBase[i]->children.size(); j++)
{
cout<<dataBase[i]->children[j]->name<<endl;
}
}

关于c++ - 顾问/学生树 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352709/

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