私はリストと簡単な宿題をやろうとしていると私は機能コードにしたい:頭が向いている場合if文でヌルポインタを使用できないのはなぜですか?
- は、リストの先頭と整数
- チェックにダブルポインタを受信しますNULLへのヘッドポイントもし何かまたはNULL
- に、そして私の新しいノードを含む新しいメモリ位置に再割り当て[その他]
- nullでない場合は、単にリスト の下に新しいノードを追加
しかし、私のコードがヘッドリストがNULLかどうかをチェックするときに "read access memory violation"を受け取る。 これは私のコードです:それは、これを行うためになるまで
void InserList(t_node** lis, int x) {
t_node* temp;
temp = malloc(sizeof(t_node));
temp->num = x;
if (*lis == NULL) {
temp->next = NULL;
*lis = temp;
}
else {
temp = *lis;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = malloc(sizeof(t_node));
temp->next->num = x;
temp->next->next = NULL;
}
}
私のコードは問題なく動作します:
if (*lis == NULL) {
...
}
私にエラーを与える "LISはをnullptrました"。 私の考えは間違っていますか?この機能をどのように修正する必要がありますか?
はあなたに
EDITありがとう:これは、あなたが警告してコンパイルする必要がある理由です
int main(void) {
int elements;
int count;
int tempnum;
t_node *head, *second_head;
head = second_head = NULL;
t_node **ref_head, **ref_second_head;
ref_head = &head;
ref_second_head = &second_head;
scanf("%d", &elements);
for (count = 0; count != elements; count++) {
scanf("%d", &tempnum);
InserList(head, tempnum);
if (IsPrimo(tempnum) == false) {
InserList(second_head, tempnum);
}
}
PrintList(second_head);
}
そして、あなたはどのように 'InserList'を呼び出しましたか?あなたがそれを管理する方法に依存します) – StoryTeller
'if(lis == NULL) – BlackBear
'lis'自体がポインタです、どうして最初にチェックしてみてください。なぜなら、' lis'はどこから来たのですか? –