私は基本的な単独リンクリストを実装しようとしています。その中で、私は頭から挿入しようとしています。それから私は挿入されたデータを印刷しようとしました。私のコードは以下の通りです:カスタムリンクリストの値を印刷中に無限ループ中にこだわる
#include<iostream>
using namespace std;
template<class T>
class Node
{
public:
T data;
Node<T> *next;
Node():data(T()),next(NULL)
{}
};
template<class T>
class SinglyinkedList
{
public:
Node<T> *head;
SinglyinkedList():head(NULL)
{}
void insertFromHead(T data)
{
Node<T> *temp;
temp->data = data;
temp->next = head;
head = temp;
}
void printLinkedist()
{
Node<T> *temp;
temp = head;
while(temp != NULL)
{
cout <<"Hi";
cout << temp->data;
temp = temp->next;
}
}
};
int main()
{
SinglyinkedList<int> list;
list.insertFromHead(10);
list.insertFromHead(20);
list.insertFromHead(30);
list.insertFromHead(40);
list.printLinkedist();
return 0;
}
しかし、私はリンクされたリストを印刷するときにwhileループに入り、同じ値を何度も印刷しています。 誰かが私がなぜループに詰め込まれているのを助けることができますか?あなたが初期化されていないオブジェクトで作業しようとしている
を、 'temp-> data'は初期化されていないポインタにアクセスしており、クラッシュする可能性があります。 – crashmstr
@crashmstrしかし、Node Classのデフォルトのコンストラクタで初期化する必要があります。 –
'Node * temp;'は初期化されていない*ポインタ*です。 'Node temp;'はデフォルトで 'Node 'になります。 –
crashmstr