c++ - 将元素添加到已排序的链表

标签 c++ sorting linked-list add

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

谢谢

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;
  }
}
}    `

最佳答案

while 退出条件被反转:

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

应该是

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

如果 currNULL,它将在检查 NULL 之前崩溃(确切地说,是 UB)。

关于c++ - 将元素添加到已排序的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471472/

相关文章:

c++ - 如果 T 不可 move ,则 std::vector<T> 是否可 move ?

c++ - 为什么我不能像这样在 QMap 上调用插入?

Angular 2 Material 实现排序、过滤和分页

javascript - 时区偏移数组的自定义排序

c++ - 更快的算法来计算有多少数字可以被一个范围内的特定整数整除

c++ - Qt:按值将自定义对象存储在集合中

postgresql - 如何按列排序但数组排在第一位

c++ - C++中有序链表类的插入函数问题

java - 如果 LinkedList 为空,则返回 int 的方法不返回任何内容?

c - printf 期间数据被修改