链表中的链表-节点无法初始化

时间:2019-01-31 04:41:45

标签: c++ struct linked-list

林正在为我的数据结构类一个C ++项目,使用嵌套链表。

我应该写一个程序来从文件中读取学生姓名,并从中创建一个链接列表。链接列表中的每个条目都应具有该学生的姓名,指向下一个学生的指针以及指向该学生的成绩的链接列表的指针。该程序允许老师输入每个学生的成绩。

就目前而言,我担心寻找正确的上手方法。

书中提供一个示意图,它表示的数据结构应如何一个例子:diagram

struct Grade{
 float score;
};

struct GradeNode{
 Grade grade_ptr; //points to Grade above 
 GradeNode *next_gnode; //points to next Grade NODE
};

struct StudentNode {
 string name; //holds Student name 
 GradeNode *grades;  //points to linked list of grades for this student
 StudentNode *next_snode; //points to next student 
};

StudentNode* head = nullptr; //head of student linked list (set to nullptr)

我相信我如何进行此布局是合理的,但是当我在下面运行代码时:

void appendNode(string n){

StudentNode *node;   //new node

node = new StudentNode;
node->name = n;
node->next_snode = nullptr;

//i just want to print out this node to see if value is initialized correctly
cout<<node->name<<endl; //this student's name prints out 

};

它返回一个错误,指出“链接器命令失败”。我觉得自己初始化节点错误,但不知道如何解决。

如果有人有关于如何找到一个解决方案,或使用链表这个任务了不同的方法技巧,我真的很感激它。

这里是错误日志的照片 enter image description here

2 个答案:

答案 0 :(得分:2)

从图片中看来,您已经声明并使用了函数buildList(std::string)(在main中),但从未对此函数提供定义。

解决方案:为buildList函数赋予一个主体。

答案 1 :(得分:0)

在main中使用某个功能而不提供功能定义时,会发生错误。在使用前定义功能。