单链表:学生信息管理系统

一、头文件

#ifndef __LINK_H__
#define __LINK_H__
#include <myhead.h>
#define MAX 30
// 建立学生结构体
typedef struct student
{int id; //学号char name[20]; //姓名float score; //分数
}stu;typedef struct node
{union{int len;stu data;};struct node * next;
}Link, *Plink;/**********函数声明**********/
//创建头结点
Plink set_up_link();
//判空
int empty(Plink L);
//1.输入学生信息
stu input_student(stu * people);
//2.头插法输入
void head_sert(Plink L, stu people);
//3.遍历单链表
void output_link(Plink L);
//
int input_sub();
//4.任意位置插入一个完整学生信息
void any_sert(Plink L, int sub, stu  key);
//5.任意位置删除一个完整学生信息
void any_delete(Plink L, int sub);
//6.单链表逆置
void reverse_link(Plink L);
//7.按照学生成绩排序
void bubble_sort(Plink L);#endif

二、功能函数

0.准备创建节点

//1.创建头结点
Plink set_up_link()
{Plink L = malloc( sizeof(Link) );if(NULL == L){printf("创建失败!\n");return NULL;}L->len = 0;L->next = NULL;return L;
}//判空
int empty(Plink L)
{if(NULL == L){printf("创建失败!\n");return 1;}return 0;
}

1.头插法输入

//输入学生信息
stu input_student(stu * people)
{printf("请输入学生信息:\n");printf("学号:");scanf("%d", &people->id);printf("姓名:");scanf("%s", people->name);printf("分数:");scanf("%f", &people->score);return *people;
}//2.头插法输入
void head_sert(Plink L, stu people)
{if(empty(L)) return;Plink p = malloc(sizeof(Link));p->data = people;p->next = L->next;L->next = p;L->len++;}


2.遍历单链表

//3.遍历单链表
void output_link(Plink L)
{Plink t = L;for(int i=0; i<L->len; i++){printf("学号%d\t姓名%s\t分数%.2f\n",t->next->data.id, t->next->data.name, t->next->data.score);t = t->next;}
}


3.任意位置插入一个完整学生信息

//请输入插入/删除位置
int input_sub()
{int sub;printf("请输入插入/删除位置:");scanf("%d",&sub);return sub;
}//4.任意位置插入一个完整学生信息
void any_sert(Plink L, int sub, stu key)
{if(empty(L) || sub<1 || sub>L->len+1) return;Plink t = L;for(int i=1; i<sub; i++){t = t->next;}Plink p = malloc(sizeof(Link));p->data = key;p->next = t->next;t->next = p;L->len++;
}


4.任意位置删除一个完整学生信息

//5.任意位置删除一个完整学生信息
void any_delete(Plink L, int sub)
{if(empty(L) || sub<1 || sub>L->len) return;Plink t = L;for(int i=1; i<sub; i++){t = t->next;}Plink Q = t->next;t->next = t->next->next;L->len--;free(Q);Q = NULL;
}


5.单链表逆置

//6.单链表逆置
void reverse_link(Plink L)
{if(empty(L)) return;Plink t = L->next;Plink q = t->next;while(q!=NULL){t->next = q->next;q->next = L->next;L->next = q;q = t->next;}
}


6.按照学生成绩排序

//7.按照学生成绩排序
void bubble_sort(Plink L)
{if(empty(L)) return;for(int i=0; i<L->len; i++){for(Plink j=L->next; j->next != NULL; j=j->next){if( j->data.score > j->next->data.score ){int temp = j->data.score;j->data.score = j->next->data.score;j->next->data.score = temp;}}}
}

三、主函数

#include "link.h"int main(int argc, const char *argv[])
{	//创建头结点Plink L = set_up_link();while(1){printf("\t\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("\t\t0.退出\n");int choice;printf("请选择:");scanf("%d",&choice);switch(choice){case 1:	//1.头插法输入int n;printf("请输入学生人数:");scanf("%d",&n);stu people;for(int i=0; i<n; i++){input_student(&people);head_sert(L,people);}break;case 2: //2.遍历单链表output_link(L);break;case 3: //3.任意位置插入一个完整学生信息int sub0 = input_sub();stu key = input_student(&people);any_sert(L, sub0, key);output_link(L);break;case 4://4.任意位置删除一个完整学生信息int sub1 = input_sub();any_delete(L , sub1);output_link(L);break;case 5: //5.单链表逆置reverse_link(L);output_link(L);break;case 6: //6.按照学生成绩排序bubble_sort(L);output_link(L);break;case 0: //0.退出return 0;default :printf("请重新选择:");scanf("%d",&choice);break;}}free(L);L = NULL;return 0;
}

四、结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149365.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(Arxiv-2024)DiffLoRA:通过扩散生成个性化低秩自适应权重

DiffLoRA&#xff1a;通过扩散生成个性化低秩自适应权重 paper title&#xff1a;DiffLoRA: Generating Personalized Low-Rank Adaptation Weights with Diffusion paper是电子科技大学发表在arxiv 2024的工作 paper地址 Abstract 个性化文本转图像生成因其能够根据用户定义的…

【python】requests 库 源码解读、参数解读

文章目录 一、基础知识二、Requests库详解2.1 requests 库源码简要解读2.2 参数解读2.3 处理响应2.4 错误处理 一、基础知识 以前写过2篇文章&#xff1a; 计算机网络基础&#xff1a; 【socket】从计算机网络基础到socket编程——Windows && Linux C语言 Python实现…

环形缓冲区例子

即使使用中断函数或者定时器函数记录按键&#xff0c;如果只能记录一个键值的话&#xff0c;如果不能 及时读走出来&#xff0c;再次发生中断时新值就会覆盖旧值。要解决数据被覆盖的问题&#xff0c;可以使用 一个稍微大点的缓冲区&#xff0c;这就涉及数据的写入、读出&#…

MyBatis - 动态SQL

前言 我们在某网站填写个人信息时&#xff0c;时常会遇到可以选填的空&#xff08;即可填&#xff0c;可不填&#xff09;&#xff0c;由于之前讲过的Java中的SQL语句都是固定的&#xff0c;且我们不可能对所有情况都写出与之对应的插入语句&#xff08;太过繁琐&#xff09;&…

【LLM多模态】Animatediff文生视频大模型

note AnimateDiff框架&#xff1a;核心是一个可插拔的运动模块&#xff0c;它可以从真实世界视频中学习通用的运动先验&#xff0c;并与任何基于相同基础T2I的个性化模型集成&#xff0c;以生成动画。训练策略&#xff1a;AnimateDiff的训练包括三个阶段&#xff1a; 领域适配…

56 mysql 用户权限相关的实现

前言 这里讨论 mysql 的权限相关处理 使用如下语句创建 tz_test 用户, 并赋予他 test_02 数据库的查询权限 create user tz_test% identified by tz_test; grant select on test_02.* to tz_test%; 查询目标数据表, 数据如下, tz_test_02 UPDATE command denied to user …

前端——表单和输入

今天我们来学习web前端中的表单和输入 表单 HTML 表单用于收集用户的输入信息&#xff0c;用表单标签来完成服务器的一次交互。 HTML 表单表示文档中的一个区域&#xff0c;此区域包含交互控件&#xff0c;将用户收集到的信息发送到 Web 服务器。 HTML 表单通常包含各种输入…

Apache Dolphinscheduler:一个开源的分布式工作流调度系统

一个开源的分布式工作流调度系统 Apache Dolphinscheduler概述安装 单机部署准备工作启动DolphinScheduler登录DolphinScheduler启停服务命令配置数据库初始化数据库 DolphinScheduler集群模式准备工作修改install_env.sh文件修改dolphinscheduler_env.sh文件初始化数据库部署访…

【Python】数据可视化之分布图

分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征&#xff0c;帮助人们更好地理解数据的内在规律和相互关系。 目录 单变量分布 变量关系组图 双变量关系 核密度估计 山脊分布图 单变量分布…

谷歌网站收录查询,怎么查看网站在谷歌的收录情况

在进行谷歌网站收录查询时&#xff0c;我们需采取一种既专业又系统的方法&#xff0c;以确保能够准确评估网站在谷歌搜索引擎中的可见性和收录状态。这一过程不仅关乎技术细节&#xff0c;还涉及到对搜索引擎优化&#xff08;SEO&#xff09;策略的理解与应用。以下是一个基于专…

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址&#xff1a;https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能&#xff0c;在会话窗口底部&#xff0c;显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等&#xff1a; &#xff08;完整窗口&#xff0…

QT| “无法粘贴窗口部件”错误以及customplot

“无法粘贴窗口部件”错误以及customplot “无法粘贴窗口部件”错误customplot下载添加到项目中使用QCustomPlot常用的代码 “无法粘贴窗口部件”错误 情景&#xff1a;使用QT设计界面&#xff0c;很多部分比较类似&#xff0c;可以复制另一个界面的ui&#xff0c;但是粘粘的时…

力扣 中等 1901.寻找峰值II

文章目录 题目介绍题解 题目介绍 题解 需要明白一个事实&#xff1a;从任意一个点出发&#xff0c;可以经过一个递增路径&#xff0c;找到一个极大值点。 求出一行的最大值&#xff0c;如果这行最大值比上面的要小&#xff0c;那峰值&#xff08;之一&#xff09;就会在上面 …

React-Native 中使用 react-native-image-crop-picker 在华为手机上不能正常使用拍照功能

背景: React-Native 0.66 中使用 react-native-image-crop-picker 在安卓 华为手机上不能正常使用拍照功能, 其他品牌正常 代码如下: import ImagePicker from react-native-image-crop-picker;ImagePicker.openCamera(photoOptions).then(image > {callback(image);}) …

如何释放并重新获得ip地址呢?

如何释放并重新获得ip地址呢&#xff1f; 释放并重新获得一个IP地址的具体步骤如下&#xff1a; 1、要想从DHCP服务器重新获取ip&#xff0c;电脑必须设置成"自动获取ip",设置如下&#xff0c;在电脑桌面"网络"-属性-更改适配器设置为自动获取ip。 2、然…

在CentOS 6上安装Squid代理的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 Status: 已弃用 本文涵盖的 CentOS 版本已不再受支持。如果您目前正在运行 CentOS 6 服务器&#xff0c;我们强烈建议升级或迁移到受支持…

【威领,德新,中达安】9.23复盘

威领这次的底部是4个月 所以这种跳空高开&#xff0c;远离5日均线的&#xff0c;如果不是近期的利好板块&#xff0c;那么第二天可能要回调5日均线。所以按照我的收益准则&#xff0c;吃一个板可以出一半了。 到顶部十字剩下一半也出掉了。 如果做长期&#xff0c;我依旧认为威…

CSS03-CSS的引入方式

一、CSS的三种样式表 1-1、内部样式表 示例&#xff1a; 1-2、行内样式表 1-3、外部样式表 1-4、小结

在Windows系统上安装的 Arrow C++ 库

在Windows系统上安装的 Arrow C 库 正文第一步第二步第三步第四步注: 检查是否安装成功 吐槽 正文 第一步 git clone gitgithub.com:apache/arrow.git第二步 打开powershell (好像cmd也可以,不过我试了powershell中不报错,cmd中报错,不是很清楚为什么) 打开arrow的目录 cd …

统信服务器操作系统【qcow2 镜像空间扩容】方案

使用 qcow2 镜像安装系统,当默认安装系统存储空间不够用时,进行自定义扩容 文章目录 准备环境扩容步骤一、检查环境信息1.查看镜像信息2.查看镜像分区信息3.确认需要扩容的分区名二、扩容1.备份镜像2.创建新的镜像文件,并指定空间3.将系统扩容到新的镜像三、扩容 lvm 分区四…