我的程序正在编译,但是当我尝试运行此代码时,我遇到了一个seg错误。我想要做的是将一个元素追加到链表的末尾。这是我的应用程序正在做的事情:
int main()
{
linklist<int> l;
int i = 30;
l.insertEnd(i);
return (0);
}
以下是我班级函数的实现:
template <class T>
void linklist<T>::insertEnd(T anItem)
{
if(this->headPointer = NULL)
{
headPointer = new node(anItem, NULL);
}
else
{
node* endPointer = headPointer;
while(endPointer->linkPointer != NULL)
{
endPointer = endPointer->linkPointer;
}
endPointer->linkPointer = new node(anItem, NULL);
}
};
最后,这是我的节点的设置方式:
class node
{
public:
T dataItem;
node* linkPointer;
// construct a new node and initialize its attributes with the given parameters.
node(T i, node* l): dataItem(i), linkPointer(l)
{
};
};
node* headPointer;
};
答案 0 :(得分:3)
template <class T>
void linklist<T>::insertEnd(T anItem)
{
if(this->headPointer == NULL) //you were assigning null instead of comparing
{
headPointer = new node(anItem, NULL);
}
//rest of the code here
试试这个
答案 1 :(得分:2)
这个陈述似乎是问题,而不是比较你正在分配。
if(this->headPointer = NULL)
使用此:
if(this->headPointer == NULL)
或
if(NULL == this->headPointer) // This is better way to compare.