私は値渡しのノードを削除しようとしていますが、関数によって返されましたが、参照で渡されます。私はこのコードを試しましたが、コンパイラは:* head = * head-> nextで文句を言う。参照で渡されたノードを削除するには
#include<stdio.h>
typedef struct nody student;
struct nody{
char name[20];
double gpa;
student *next;
};
student* deletefirstlist(student **head, student *nn);
int main(){
student *head, *node, *w;
node = (student*) malloc(sizeof(student));
gets(node->name);
node->gpa=3.6;
node->next=NULL;
head = node;
node = (student*) malloc(sizeof(student));
gets(node->name);
node->gpa=3.7;
node->next=head;
head = node;
w = head;
while(w!=NULL){
printf("%s %lf\n\n", w->name, w->gpa);
w=w->next;
}
node = deletefirstnode(&head, node);
while(w!=NULL){
printf("%s %lf\n\n", w->name, w->gpa);
w=w->next;
}
return 0;
}
student* deletefirstlist(student **head, student *nn){
nn = *head;
*head = *head->next; // the problem is here
nn->next=NULL;
return nn;
}
おかげで、私はあなたが頭やリンクされたノードとのリストを作成していることを理解して、あなたが最初に削除しようと引用されたコードから百万
'*頭部> next' - >' (* head) - > next' – BLUEPIXY
私は* head = nn-> nextをやろうとしました。 – TheGame
それは働いた。それは正しい? – TheGame