本文是关于学生信息 新建、增加、删除、显示、循环 的小程序
1、按照需求量,通过动态申请的方式,新建学生节点,录入信息,再次新建时,则舍弃之前的链表
2、按照需求量,通过动态申请的方式,新增学生节点,录入信息(先有链表,再增加,没有则新建 1)
3、删除学生信息(可删除重复信息),并输出 删除数量 及删除 学号对应的学生全部信息(按学号)
4、输出新增学生信息
5、输出全部学生信息
6、去除重复学生信息(按学号)
7、输出信息时,带有序号,可以产看新增了几条信息,也可以查看全部信息数量
8、循环运行
9、自主选择退出
10、提示 错误输入 或 修正
截图展示:
首次进入需要先创建学生链表,输入非 1 ,自动修正为 1,输入 0 可以直接退出。
1、创建新的学生链表
再次选择 1 时,放弃之前的链表 重新创建
2、在原有的链表中增加学生信息(尾部增加)
4、显示新增的学生信息
5、显示当前全部学生信息
3、删除学生信息(重复信息一并删除),显示删除数量及学生详细信息(按学号查找、删除)
删除后查看对比
多增加一些信息看看,(数量不受限制)
查看一下(带序号输出,总数一目了然)
6、去除重复信息
去重 和 删除 功能 相似,双重循环遍历链表,查找外循环对应的对象,内循环开始节点起始于外循环的下一节点, 查找到删除即可;(最后的节点处理要注意,否则会内存报错)
在此基础上,还可以增加比如 按姓名、身份证、手机号等查找的功能
按其他信息查找 和 现在的按学号查找 功能相同 查找的对象(结构体 成员不同而已),有需要的自己添加吧;
代码如下:
#include "stdio.h"
#include "stdlib.h"
int count=0;
/*出生日期结构体*/
struct birthday
{
int year;
int month;
int data;
};
/*学生信息结构体*/
struct student //定义结构体
{
double num; //学号
char name[20]; //姓名
char sexy[4]; //性别
struct birthday bir;//出生日期
char id_num[20]; //身份证
char phone[12]; //电话
char add[40]; //地址
struct student *next; //结构体指针
} ;
/*函数声明*/
void add_creact_s(struct student *head);//增加链表
void del_creact_s(struct student *head,struct student *last);//删除链表
void Duplicate_removal_s(struct student *head,struct student *last); //去重
void input_s(struct student *head,struct student *last,struct student *pin);//输入信息
void p_list();//表格标题
void aoutput_s(struct student *head,struct student *last,struct student *pout);//输出信息
/*循环函数起点*/
int mean(struct student *head,struct student *last)
{
printf("【0】退出\n【1】创建新表\n【2】增加学生信息\n【3】删除学生信息\n");
printf(