我的代码遇到了麻烦。调用链表似乎没有得到“更新”的值,或者他们没有保存或其他东西。可以使用一些帮助,谢谢。
template <class T>
void LinkedList<T>::insert_front(const T& x)
{
LinkedList* p = this;
LinkedList* tmp = new LinkedList(x,p);
p = tmp;
cout<<p->m_data<<endl;
cout<<tmp->m_data<<endl;
调用函数是
//TEST : Inserting 10 numbers to a
cout << endl << "TEST : Inserting 10 numbers to A" << endl;
for (int k=0; k<10; k++){
A.insert_front(k+1);
}
cout << A << endl;
cout << "Size of a = " << A.size() << endl;
我的输出为1122334455667788991010 这是每次调用的tmp数据值和p数据值 值转到代码,它们是正确的值,就在我去打印时没有任何内容只显示一个空列表。谢谢,我是新来的,但热爱社区。 p>
答案 0 :(得分:1)
您对链表和方法的设计是错误的。
在方法中,您定义了局部变量p并为其分配了tmp。退出方法后,此局部变量将被销毁。所以列表本身没有发生任何事情。它的数据成员都没有改变。还有内存泄漏。
template <class T>
void LinkedList<T>::insert_front(const T& x)
{
LinkedList* p = this;
LinkedList* tmp = new LinkedList(x,p);
p = tmp;
cout<<p->m_data<<endl;
cout<<tmp->m_data<<endl;
你应该把你的班级分成两个班级。第一个将定义列表的节点,第二个将控制列表的操作,并包含列表的头部作为其数据成员。