create()的功能应该包含为创建申请一块结构体所需的空间,并将其与原表尾连接。
typedef struct xvesheng {
int xvehao;
int score;
char name[20];
struct xvesheng *next;
} xvesheng;
上方为事先定义的结构
最初创建时应返回表头的地址,以确定链表头的地址便于访问
xvesheng *create ();
代码实现应该为:
xvesheng *create(int number) {
xvesheng *head = NULL, *ptr = NULL;
int xvehao, score;
char name[20];
while (number--) {
if (head == NULL) {
ptr = (xvesheng *)malloc(sizeof(xvesheng));
head = ptr;
} else {
ptr->next = (xvesheng *)malloc(sizeof(xvesheng));
ptr = ptr->next;
}
scanf("%d%d", &xvehao, &score);
gets(name);
chushihua(ptr, xvehao, score, name);
}
return head;
}
因为需要区分是否为表头,所以需要进行选择,所以有一大段选择结构,当我们提前为第一个节点申请空间时,把第一个节点不储存数据时,代码会简单很多。
xvesheng *create(int number) {
int xvehao, score;
char name[20];
xvesheng *ptr = NULL;
xvesheng *head = NULL;
head = (xvesheng *)malloc(sizeof(xvesheng));
ptr = head;
while (number--) {
ptr->next = (xvesheng *)malloc(sizeof(xvesheng));
ptr = ptr->next;
printf("请依次输入学号,成绩,姓名(中间以换行分割)\n");
scanf("%d%d", &xvehao, &score);
gets(name);
chushihua(ptr, xvehao, score, name);
}
return head;
}