1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 typedef struct student 5 { 6 int num; 7 float socre; 8 struct student *next; 9 }Student; 10 11 Student *creatlist(void) //创建空链表,头节点 12 { 13 Student *head=(Student *)malloc(sizeof(Student));//为head申请节点空间 14 head->next=NULL; 15 16 return head;//返回结构体头节点指针地址,不管数据域 17 } 18 19 void insertlist(Student *head,int num,float socre) //插入数据,链表创建 20 { 21 Student *cur=(Student *)malloc(sizeof(Student));//给新节点申请空间 22 23 // while(num)不进行检查了因为输入的数据都是有效的 24 //cur=(Student *)malloc(sizeof(Student));上面已经申请了空间 25 26 cur->num=num; 27 cur->socre=socre;//给节点赋值 28 29 cur->next=head->next;//先来的节点先有所指向,头节点的NULL移动到插入的第一个数据中 30 head->next=cur;//头结点指向新节点 31 32 } 33 34 void print(Student *head)//遍历链表 35 { 36 head=head->next;//指向第一个有数据的节点 37 while(head)//最后一个节点的head->next为NULL 38 { 39 40 printf("num:%d,socre:%.f ",head->num,head->socre); //head进行成员访问 41 head=head->next;//指向下一个节点 42 } 43 } 44 int main() 45 { 46 Student *head=creatlist();//头指针指向头结点 47 int i=0; 48 float j=100; 49 for(i;i<10;i++,j--)//for循环插入数据 50 { 51 insertlist(head,i,j); 52 } 53 print(head); 54 system("pause"); 55 }