なぜ私がセグに障害を起こしているのか理解できません。基本的な考え方は、リンクリストを使用して再帰的に整数を順番に挿入することです。
node* insert(node** head, int integer)
{
node* temp = malloc(sizeof(node));
node* temp1;
node* newNode;
if(*head == NULL)
{
temp->num = integer;
temp->next = *head;
*head = temp;
}
else if((*head)->num > integer)
{
temp = *head;
temp1 = temp->next; //breaks the link
temp->next = newNode; //creates a new node
newNode->num = integer; //adds int
newNode->next = temp1; //links new node to previously broken node
temp1->next = *head; //next node is NULL
*head = temp1; //Makes next node head again
}
else
insert(&((*head)->next), integer);
return(temp);
}
このコードをGDBで実行したところ、セグメンテーション違反が発生しましtemp1->next = *head
たが、その理由がわかりません。私も自分自身を助けるためにメモを入れましたが、それは機能していないと思います。誰かが私がセグメント障害を起こしている理由を教えてもらえますか?ありがとう。