Правильно выделить память под односвязный список - C (СИ)
Формулировка задачи:
Не могу правильно выделить память под односвязный список.
Укажите, пожалуйста, мою ошибку:
З.Ы. Сорри, что заголовок жирным шрифтом не выделен - неумет.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void fill_list(struct slave *head,struct slave *tail);
struct slave
{
char* faculty;
char* cathedral;
char* name;
int spec_code;
char* spec_txt;
int course;
char* group;
int marks[5];
struct slave *next;
};
void main()
{
struct slave *head=NULL,*tail=NULL;
fill_list(head,tail);
}
void fill_list(struct slave *head,struct slave *tail)
{
struct slave *list=NULL;
list=head=(struct slave*)calloc(1,sizeof(struct slave));
if(list==NULL)
exit(1);
char c;
for(int i=0;;i++)
{
printf("enter faculty\n");
_cgets(list->faculty);
printf("enter cathedral\n");
_cgets(list->cathedral);
printf("enter name\n");
_cgets(list->name);
printf("enter speciality code\n");
scanf("%d",list->spec_code);
printf("enter speciality name\n");
_cgets(list->spec_txt);
printf("enter course number\n");
scanf("%d",list->course);
printf("enter group name\n");
_cgets(list->group);
printf("enter marks\n");
for(int j=0;j<5;j++)
scanf("%d",list->marks[j]);
printf("continue y/n\n");
if((c=getchar())=='n')
break;
list->next=(struct slave*)malloc(sizeof(struct slave));
list=list->next;
}
tail=list;
list->next=NULL;
}Решение задачи: «Правильно выделить память под односвязный список»
textual
Листинг программы
int main(){
//...
return 0;
}