#ifndef _LINK_L_
#define _LINK_L_
#include <myhead.h>
//学生信息结构体
typedef struct
{
int id;
char name[20];
}stu,*Stu;
//单链表结构体
typedef struct Link
{
union
{
int len;
stu xs;
};
struct Link *next;
}links,*Plink;
//创建头节点
Plink create();
//尾插法
int rear_insert(Plink,stu);
//输出函数
int output_link(Plink);
//学生信息输入
Stu input_stu(Stu);
//任意位置插入
int anypos_insert(Plink,int,Stu);
//任意位置删除
int anypos_delete(Plink,int);
//单链表逆置
int rev_stulink(Plink);
//按学号排序
int id_sort(Plink);
//单链表销毁
int link_destroy(Plink);
#endif
(2)主函数编写
cpp复制代码
#include "link.h"
int main(int argc, const char *argv[])
{
int n,pos;
Stu s=NULL;
Stu sp=NULL;
Plink L=create();
//学生信息管理系统结构
while(1){
printf("\t++++++学生管理系统++++++++++\n");
printf("\t\t1、尾插法\n");
printf("\t\t2、任意位置插入信息\n");
printf("\t\t3、任意位置删除信息\n");
printf("\t\t4、单链表逆置\n");
printf("\t\t5、学生学号排序\n");
printf("\t\t6、销毁链表退出系统\n");
printf("\n");
int cz=0;
printf("请输入操作数:");
scanf("%d",&cz);
switch(cz){
case 1:
//尾插法
printf("请输入学生个数:");
scanf("%d",&n);
s=malloc(sizeof(stu)*n);
for(int i=0;i<n;i++){
printf("请输入学生信息:");
scanf("%d %s",&s[i].id,s[i].name);
}
for(int i=0;i<n;i++){
rear_insert(L,s[i]);
}
output_link(L);break;
case 2:
//任意位置插入
printf("请输入要插入位置:");
scanf("%d",&pos);
sp=input_stu(sp);
anypos_insert(L,pos,sp);
output_link(L);break;
case 3:
//任意位置删除
printf("请输入要删除位置:");
scanf("%d",&pos);
anypos_delete(L,pos);
output_link(L);break;
case 4:
//单链表逆置
rev_stulink(L);
output_link(L);break;
case 5:
id_sort(L);
output_link(L);
break;
case 6:
//销毁单链表并退出程序
link_destroy(L);
return 0;
}
}
return 0;
}