ANSI C: Fejl i linked list
I mit forsøg på at lære C er jeg stødt ind i et problem med linked lists.Når jeg starter mit program initialiserer jeg en linked list ud fra et array af structs, det ser også ud til at virke, men når jeg derefter forsøger at udskrive min liste får jeg en fejlrapport fra win xp der popper op. Det er selvfølgelig ikke meningen, men jeg kan simpelthen ikke se hvorfor.
Koden står herunder og så vidt jeg kan se er det i funktionen show_grade det går galt:
#include<stdio.h>
#include<stdlib.h>
struct node{
char* name;
int grade;
struct node* next;
};
typedef struct node Node;
void makestartlist(Node * node);
void show_grade(Node * node);
main(){
int choice;
char quit;
Node * nodelist;
//Make default linked list
makestartlist(nodelist);
do{
// User-interface
printf("*********MENU**********\n");
printf("1. Show grade list\n");
printf("7. Stop\n");
scanf("%d", &choice);
switch (choice) {
case 1 :
show_grade(nodelist);
break;
case 7 :
break;
default :
printf("Invalid input, would you like to quit (y/n)?");
scanf("%s", &quit);
if (quit != 'n' && quit != 'N')
choice = 7;
break;
}
} while(choice != 7);
}
void makestartlist(Node *node){
int i;
// Declare array of structs
Node students[10] = {
{"Lars",0},
{"Bent",3},
{"Hans",5},
{"Lise",6},
{"Lone",7},
{"Inger",8},
{"Bo",9},
{"Else",10},
{"Atli",11},
{"Jens",13}
};
for (i=0; i<10 ;i++){
node = (Node*)malloc(sizeof(Node)); //Allocate memory
node -> name = students[i].name; //Add name
node -> grade = students[i].grade; //Add grade
node = node->next;
}
}
void show_grade(Node * node){
printf("Show grade list chosen\n");
//Print linked list
while(node != NULL){
printf("Student: %s, Grade: %d\n", node->name, node->grade);
node = node->next;
}
}