插入链接列表的前面

时间:2014-03-03 00:22:42

标签: c++

我的代码遇到了麻烦。调用链表似乎没有得到“更新”的值,或者他们没有保存或其他东西。可以使用一些帮助,谢谢。

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数据值 值转到代码,它们是正确的值,就在我去打印时没有任何内容只显示一个空列表。谢谢,我是新来的,但热爱社区。

1 个答案:

答案 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;

你应该把你的班级分成两个班级。第一个将定义列表的节点,第二个将控制列表的操作,并包含列表的头部作为其数据成员。