分段故障链接列表C ++在结束时插入

时间:2014-09-23 04:08:00

标签: c++ linked-list segmentation-fault

我的程序正在编译,但是当我尝试运行此代码时,我遇到了一个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;    
};

2 个答案:

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