我正在学习链表,而不是编写一段代码,希望在控制台窗口上显示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
作为一个全局函数,它不是任何类的成员。