【问题标题】:linked list inside a linked list - node can't initialize链表内的链表 - 节点无法初始化
【发布时间】:2019-01-31 04:41:44
【问题描述】:

我正在为我的数据结构类开发一个 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 

};

它返回一个错误提示“链接器命令失败”。我觉得我初始化节点错误但不知道如何修复它。

如果有人有关于如何找到解决方案的提示,或使用链表完成此任务的不同方法,我将不胜感激。

这是错误日志的照片

【问题讨论】:

  • 如果有人能告诉我如何从 mac 照片库上传照片,我会上传图表以更清晰! :)
  • 所有代码是在一个文件中还是在多个文件中?
  • 请将整个错误文本添加到您的问题中。在我看来,您需要告诉链接器包含 C++ 标准库。在这方面,这似乎是编译您的程序的一个问题,因此您提供的几乎所有背景阅读都无关紧要。程序中的那个或另一个符号被引用但不可用。 @Yang 可能是在正确的轨道上。
  • 尝试将图像拖放到问题框中。
  • 为了将来的参考,即使错误消息在不熟悉的人看来可能是一堆废话,但如果您学会阅读和解释它们,您的生活将会变得无比轻松。

标签: c++ struct linked-list


【解决方案1】:

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

解决方案:给buildList函数一个body。

【讨论】:

    【解决方案2】:

    当一个函数在 main 中使用而没有提供函数定义时会发生错误。使用前定义函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-18
      • 2014-07-03
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多