【问题标题】:How to display a linked list that gets struct data as a data in c++?如何在 C++ 中显示将结构数据作为数据获取的链表?
【发布时间】:2020-10-05 22:17:17
【问题描述】:

我有这个结构,并在我的链表类中对其进行了初始化,但我不确定如何显示它:

struct CourseData {
    string CourseID, MaxCapacity, CurrentCapacity ;
    string CourseName, InstructorName, CourseSection, CourseLocation, ListOfStudents;
};

class CourseNode {
    private:
        CourseData elem;
        //
        CourseNode* next;

    public:
        CourseNode(CourseData elem) : elem(elem)
        {}  
        friend class Courses ;

};

class Courses {
    private:
        
        CourseNode *head;
    public:     
        Courses();
        ~Courses();

我应该对此代码进行哪些更改?它输出一个错误:

void Courses::display() const
{
    CourseNode *ptr=head;
    cout<<"Head->";
    while(ptr!=NULL)
    {
        cout<<ptr->elem<<"->";
        ptr=ptr->next;
    }
    cout<<"Null"<<endl;
}

【问题讨论】:

  • 你不知道如何显示它?请更具体。您从head 节点开始,显示其elem 数据,然后移动到其next 节点,显示其elem 数据,对每个后续节点重复,直到到达列表末尾。跨度>
  • 有一个打印链表的例子stackoverflow.com/a/17458675/3365922
  • ^准确地说,在 SO 和整个 Internet 上都可以找到大量示例。
  • 我编辑了我的帖子,你可以检查我的显示功能
  • 假设你想显示一个CourseData。你想怎么做?你想在屏幕上出现什么?

标签: c++ c++11


【解决方案1】:

您的 Courses::display() 方法可以按原样使用。真正的问题是 ptr-&gt;elem 是一个CourseDatadisplay() 正试图通过operator&lt;&lt; 将其按原样传递给std::cout,但您没有为CourseData 实现operator&lt;&lt;,这是编译器抱怨的,例如:

prog.cpp:在成员函数“void Courses::display() const”中: prog.cpp:39:13: error: no match for ‘operator’} 和 ‘CourseData’) coutelem"; ~~~~^~~~~~~~~~~

所以,你需要添加那个操作符,例如:

struct CourseData {
    string CourseID, MaxCapacity, CurrentCapacity ;
    string CourseName, InstructorName, CourseSection, CourseLocation, ListOfStudents;
};

ostream& operator<<(ostream &os, const CourseData &data) {
    // print data's fields to the os stream as needed...
    return os;
}

【讨论】:

  • 谢谢,但是根据需要将数据字段写入操作系统是什么意思...
  • 使用operator&lt;&lt;data.CourseIDdata.CourseName等打印到os,就像您执行任何其他值一样,例如:os &lt;&lt; "(" &lt;&lt; data.CourseID &lt;&lt; ":" &lt;&lt; data.CourseName &lt;&lt; ... &lt;&lt; ")";
  • 我检查过,它显示整个链表和堆,但我只想显示存储在结构内的数据。我应该如何实际将添加结构传递给链表
  • 那你没有正确使用列表,或者你没有正确打印出来,但是我们看不到你在做什么。请编辑您的问题,以提供 minimal reproducible example 来展示实际存在的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多