1 #include <stdio.h>
2 #include <stdlib.h>
3 //定义结点结构体
4 typedef struct student
5 {
6 int num; //学号
7 int score; //分数
8 char name[20]; //姓名
9 struct student *next;//指针域
10 }STU;
11
12 void link_creat_head(STU **p_head,STU *p_new)
13 {
14 STU *p_mov = *p_head;
15 if(*p_head == NULL) //当第一次加入链表为空时,head执行p_new
16 {
17 *p_head = p_new;
18 p_new->next=NULL;
19 }
20 else //第二次及以后加入链表
21 {
22 while(p_mov->next!=NULL)
23 {
24 p_mov=p_mov->next; //找到原有链表的最后一个节点
25 }
26
27 p_mov->next = p_new; //将新申请的节点加入链表
28 p_new->next = NULL;
29 }
30 }
31
32 int main()
33 {
34 STU *head = NULL,*p_new = NULL;
35 int num,i;
36 printf("please input linked_list initial num:\n");
37 scanf("%d",&num);
38 for(i = 0; i < num;i++)
39 {
40 p_new = (STU*)malloc(sizeof(STU));//申请一个新节点
41 printf("Please input Student No, Score, Name:\n"); //给新节点赋值
42 scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);
43
44 link_creat_head(&head,p_new); //将新节点加入链表
45 }
46 }