CODE: #define LEN sizeof(struct stu_info) typedef struct stu_info { char name[20]; long num; float math_score; float C_score; float Eng_score; struct stu_info *next; }STU; STU * Stu_list_Init(STU *L)//初始化鏈表 //有問題!!!!!!!!!!!!!!為什麼需要有返回值 才能正確運行 { STU *p; p=L; p=(STU *)malloc(LEN); if(p==NULL) { puts("申請空間失敗!"); exit(0); } p->next=NULL; return L; } void Creat_list(STU *L)//創建鏈表 { STU *tail,*p; tail=L; puts("Input students info:"); while(1) { p=(STU *)malloc(LEN); if(p==NULL) { puts("申請空間失敗!"); exit(0); } printf("\t\tname:"); scanf("%s",p->name); if(strncmp(p->name,"end",3)==0) { free(p); break; } printf("\t\tnumber:"); scanf("%ld",&p->num); printf("\t\tmath:"); scanf("%f",&p->math_score); printf("\t\tC:"); scanf("%f",&p->C_score); printf("\t\tEng:"); scanf("%f",&p->Eng_score); p->next=NULL; tail->next=p; tail=p; } tail->next=NULL; fflush(NULL); } int main() { struct stu_info *stu; stu=Stu_list_Init(stu); Creat_list(stu); return 0; } |
CODE: STU * Stu_list_Init(STU *L)//初始化鏈表 有返回值 { STU *p; p=L; p=(STU *)malloc(LEN); if(p==NULL) { puts("申請空間失敗!"); exit(0); } p->next=NULL; return L; } |
CODE: void * Stu_list_Init(STU *L)//初始化鏈表 //無返回值 { STU *p; p=L; p=(STU *)malloc(LEN); if(p==NULL) { puts("申請空間失敗!"); exit(0); } p->next=NULL; } |
[火星人 ] 求解:關於帶頭結點鏈表初始化的 問題已經有317次圍觀