无法打印链接列表的数据



我正在学习链表,而不是编写一段代码,希望在控制台窗口上显示data1和data2。然而,只有数据1出现了,我不知道为什么。

我想知道我是否写错了成员函数print()。谢谢

定义类别node如下

class node {
public:
node(T _data, node* _link) : data(_data), link(_link) {}
T getdata() { return data; }
node* getlink() { return link; }
void setdata(T data) { this->data = data; }
void setlink(node* link) { this->link = link; }
void print() {
while (!isEnd()) {
std::cout << data << endl;
link = link->link;//go to the next node
}
}
bool isEnd() {
if (link == NULL)
return true;
return false;
}
private:
T data;
node* link;
};

然后我实现了如下的主要功能。

//get data1 and data2
node<int>* Head = new node<int>(data2, NULL);
Head = new node<int>(data1, Head);
Head->print();

打印不应该是成员函数。相反,编写这样的全局函数(我已将函数重命名为print_list(。

void print_list(node* n){
while (!n->isEnd()){
std::cout << n->getdata() << endl;
n = n->getlink(); //go to the next node
}
}

像这样使用

print_list(Head);

节点成员功能应该是关于单个节点的功能。打印一个列表就是一个完整的列表。如果您有一个列表类,那么将print作为列表类的成员是有意义的。但是由于您没有列表类,所以应该将print_list作为一个全局函数,它不是任何类的成员。

相关内容

  • 没有找到相关文章

最新更新