void del (node* list) {
int a;
printf("Enter no. to be deleted");
scanf("%d", &a);
node* p;
node* prev;
p = list;
while (p != NULL) {
if (p -> n == a) {
if (p == list) {
list = p -> next;
free (p);
return;
}
else {
prev -> next = p -> next;
free (p);
return;
}
}
else {
prev = p;
p = p -> next;
}
}
}
このコードは、最初のノードを除くすべてのノードを削除します。最初のノードを削除しようとすると、乱数が出力されます。理由は何ですか?