0

我正在研究单链表,其中我遇到了添加函数的问题,该函数将整数添加到排序方式中。但是我的程序不断崩溃。我整晚都在工作,但我找不到问题所在。有人对此有任何想法吗?

谢谢

template<typename T>
class SLList
{
private:

struct Node
{

Node(const T& val= T(), Node* next_ptr=NULL) : data(val), next(next_ptr) { }

// data members
T data;
Node *next;
};


 template<typename T>

void SLList<T>::add(const T& val)
{
 if (find(val)==false)
  {
 Node *curr= head;
 Node* prev=NULL;
  if(head->next==NULL)
  {
      cout<<"head";
      Node *tmp=new Node(val,head->next);
      head->next=tmp;
      return;
  }
  else
  {
  while(curr->data < val && curr!=NULL)
  {
      curr=curr->next;
      prev=curr;
      cout<<"add";
  }

Node *tmp=new Node(val, prev->next);
//head->next=tmp;
  }
}
}    `
4

2 回答 2

1

while退出条件反转:

while(curr->data < val && curr!=NULL)

应该

while( curr!=NULL && curr->data < val )

如果currNULL,它将在检查NULL.

于 2012-05-06T14:59:59.690 回答
0

另外,继续prev = curr前进:

while(curr != NULL && curr->data < val) {
  prev = curr;
  curr = curr->next;
  cout << "add";
}
于 2012-05-06T15:13:06.263 回答