私は Java でリンクされたリストを扱った経験が豊富にありますが、C++ でのこの単純な試みと混同してしまったようです。実行時にセグメンテーション違反が発生しています。これは、私が理解していることから、ヌルポインターの割り当てに関係していますが、解決策がありません。
編集:非常に役立つ回答をありがとうございました。コードは現在機能していますが、使用しようとしています
delete p;
linkedList::addNode の最後で、実行時にセグメンテーション違反が発生します。それがなぜなのか誰かが知っていたら、ただ興味がありますか?
これが私の更新されたコードです:
#include <iostream>
using namespace std;
class Node{
public:
int data;
Node * next;
Node(int x){
data = x;
next = NULL;
}
Node(int x, Node * y){
data = x;
next = y;
}
};
class linkedList{
Node *head;
public:
linkedList(){
head = NULL;
}
void addNode(int value){
Node *p;
if(head == NULL)
head = new Node (value, NULL);
else{
p=head;
while(p->next !=NULL)
p=p->next;
p->next = new Node (value, NULL);
}
}
void print(){
Node * p;
p = head;
while(p != NULL){
cout << p->data << "\n";
p = p->next;
}
}
};
int main(void){
linkedList test;
test.addNode(4);
test.addNode(76);
test.addNode(12);
test.print();
return(0);
}