如何在 C 中实现具有多个节点的链表?
How to implement a linked-list with multiple nodes in C?
我正在根据用户输入制作链表如下:
How Many employees? 4
现在,每个人都会有 firstname
lastname
rate
和 zipcode
,使用链表我正在尝试获取这些输入并执行 for
基于记录数循环,但显然我做的不对:
struct records {
char first[20];
char last[20];
float rate;
int zip;
struct node* next;
};
void main()
{
int i,n;
printf("Please indicate the number of records : ");
scanf("%d",&n);
struct records *head,*conductor;
head=(struct records*)malloc(n*sizeof(struct records));
head->next=NULL;
for (i=0;i<n;i++){
printf("\nEnter employee information in the format :\nFirstname Lastname rate Zipcode (newline for the next)\n");
scanf("%s %s %f %d",&head->first,&head->last,&head->rate,&head->zip);
conductor=head;
conductor=conductor->next;}
}
我该如何做对?
样本修复
struct records {
char first[20];
char last[20];
float rate;
int zip;
struct records *next;//typo struct node* next;
};
int main(void){//return type is `int`
int i, n;
printf("Please indicate the number of records : ");
scanf("%d", &n);
struct records *head,*conductor;
head=(struct records*)malloc(n*sizeof(struct records));
for (i=0; i<n; i++){
printf("\nEnter employee information in the format :\nFirstname Lastname rate Zipcode (newline for the next)\n");
scanf("%19s %19s %f %d", head[i].first, head[i].last, &head[i].rate, &head[i].zip);
head[i].next = &head[i+1];
}
head[n-1].next = NULL;
return 0;
}
我正在根据用户输入制作链表如下:
How Many employees? 4
现在,每个人都会有 firstname
lastname
rate
和 zipcode
,使用链表我正在尝试获取这些输入并执行 for
基于记录数循环,但显然我做的不对:
struct records {
char first[20];
char last[20];
float rate;
int zip;
struct node* next;
};
void main()
{
int i,n;
printf("Please indicate the number of records : ");
scanf("%d",&n);
struct records *head,*conductor;
head=(struct records*)malloc(n*sizeof(struct records));
head->next=NULL;
for (i=0;i<n;i++){
printf("\nEnter employee information in the format :\nFirstname Lastname rate Zipcode (newline for the next)\n");
scanf("%s %s %f %d",&head->first,&head->last,&head->rate,&head->zip);
conductor=head;
conductor=conductor->next;}
}
我该如何做对?
样本修复
struct records {
char first[20];
char last[20];
float rate;
int zip;
struct records *next;//typo struct node* next;
};
int main(void){//return type is `int`
int i, n;
printf("Please indicate the number of records : ");
scanf("%d", &n);
struct records *head,*conductor;
head=(struct records*)malloc(n*sizeof(struct records));
for (i=0; i<n; i++){
printf("\nEnter employee information in the format :\nFirstname Lastname rate Zipcode (newline for the next)\n");
scanf("%19s %19s %f %d", head[i].first, head[i].last, &head[i].rate, &head[i].zip);
head[i].next = &head[i+1];
}
head[n-1].next = NULL;
return 0;
}