#include#include〈conio。h〉 //输入函数 getch 的头文件,不能用 getchar,具体请查看两者的区别#include //申请空间的函数 malloc 的头文件typedef struct { //定义结构体类型,包含四项内容,可以自由添加int num;char name[10];int age;char sex[5];}st;typedef struct node //构造结点 (也是结构体变量){st data; //数据域struct node *next; //指针域(指向结构体,也就是自身)}list; list *create() //建立一个单链表{list *p,*r,*head; //定义结构体指针变量int i,n;head = (list *)malloc(sizeof(list)); //申请头结点r = head;head—>next = NULL; //头结点的指针域先定义为空printf("请输入学生人数:\n");scanf("%d",&n);printf("请输入学生个人信息:\n\n 学号,姓名,年龄,性别\n");for(i=1;i〈=n;i++){p = (list *)malloc(sizeof(list)); //申请一个结点scanf("%d%s%d%s",&p->data.num,&p—>data.name,&p—〉data。age,&p->data。sex); //向结点的数据域输入学生信息p—〉next = NULL;r-〉next = p; //将头结点指向第一个结点,以此类推。r = r->next;}return (head); //返回头结点的地址}void output(list *h) // 输出链表中的学生信息{list *p;p = h—>next; //使 p 指向第一个结点if(p == NULL) printf("—-—-—--——-——学生信息为空-—------—--——-——--\n\n");while(p!=NULL){printf(”学号,姓名,年龄,性别分别是:\n");printf("%d,%s,%d,%s\n”,p—>data。num,p—>data。name,p—>data。age,p—〉data.sex);p = p-〉next;}}void research(list *h) //查找链表中某一位学生信息{list *p; int k;p = h->next; //使 p 指向第一个结点printf("请输入要查找学生的学号:\n”);scanf("%d”,&k);while(p && p-〉data.num!=k)p = p—〉next; //找到学号为 k 的结点,假如没有,则 p 为空if(p){printf("学号,姓名,年龄,性别为:\n”);printf(" % d , % s , % d , % s\n”,p—>data.num , p—>data.name,p->data.age,p->data。sex);}elseprintf(”找不到此学生:\n");}void insert(list *h) // 插入一个学生信息到链表中 (插到链表末尾){list *p,*q,*r;p = h—>next;r = h;q = (list...