ソートされた方法で整数を追加するadd関数で問題が発生した単一のリンクリストで作業しています。しかし、私のプログラムはクラッシュし続けます。私は一晩中働いていましたが、問題を見つけることができませんでした。誰もこれについて何か考えているのですか?ソートされたリンクリストに要素を追加する
while(curr->data < val && curr!=NULL)
は
while(curr!=NULL && curr->data < val)
curr
がNULL
であれば、それは(まあ、UBがされるようにクラッシュするようになります。
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;
}
}
} `
を使用すると、すべての夜働いてきた場合、私はあなたはそれがクラッシュした場所を告げて気にしないと確信している、またはノードのためのコードを示します。 –
構造体ノード {//コンストラクタ ノード(CONST T&ヴァル= T()、ノード* next-ptrを= NULL):データ(val)で、次の(next-ptrを){} //データメンバー Tデータ、 ノード* next; }; public: SLList(); SLList(const SLList&lst2); 〜SLList(); CONST SLList&演算子=(CONST SLList & rhs); INTサイズ()constは、 ボイドプリント()constは、 (constのT&ヴァル)CONSTを見つけるBOOL; ボイド追加(CONST T & val); 空隙削除(CONST T & val); private:。 Nodeは* head; }; – nullPointer2
Nodeは、コピーコンストラクタであると、それはloop – nullPointer2