创建单链表

一、完成单链表操作,要求节点构造类型。

1、建立学生结构体(学号,姓名,成绩)

2、循环调用头插法创建整表

3、遍历单链表

4、任意位置插入一个完整的学生信息

5、任意位置删除一个学生。

6、单链表逆置

7、单链表按照学生成绩排序。

#include <stdio.h>
#include <stdlib.h>//创建学生结构体
typedef struct
{int id;char name[20];float score;
}stu;//创建单链表
typedef struct node
{union {int len;stu data;};struct node* next;
}Link, * Plink;Plink create()
{Plink p = malloc(sizeof(Link));if (p == NULL){printf("申请失败\n");return NULL;}p->len = 0;p->next = NULL;return p;
}//头插法
int front_insert(Plink L, stu e)
{if (L == NULL){printf("头插失败\n");return -1;}Plink p = malloc(sizeof(Link));p->data = e;p->next = L->next;L->next = p;L->len++;return 0;
}//遍历单链表
int output_link(Plink L)
{if (L == NULL || L->len == 0){printf("链表为空\n");return -1;}int i;Plink t = L;for (i = 0; i < L->len; i++){t = t->next;printf("学号:%d\t姓名:%s\t分数:%.2f\n", t->data.id, t->data.name, t->data.score);}printf("\n");return 0;
}//在任意位置插入节点
int anypos_insert(Plink L, int pos, stu e)
{if (pos<1 || pos>L->len + 1 || L == NULL){printf("插入失败\n");return -1;}int i;Plink t = L;for (i = 0; i < pos - 1; i++){t = t->next;}Plink p = malloc(sizeof(Link));p->data = e;p->next = t->next;t->next = p;L->len++;return 0;
}//在任意位置删除
int anypos_dele(Plink L, int pos)
{if (pos<1 || pos>L->len || L->len == 0 || L == NULL){printf("删除失败\n");return -1;}Plink t = L;int i;for (i = 0; i < pos - 1; i++){t = t->next;}Plink Q = t->next;t->next = t->next->next;free(Q);Q = NULL;L->len--;return 0;
}//逆置
int nizhi(Plink L)
{Plink Q = L->next;Plink t = Q->next;while (t != NULL){Q->next = t->next;t->next = L->next;L->next = t;t = Q->next;}return 0;
}//冒泡排序
int bublu(Plink L)
{int i;Plink j;stu temp;for (i = 1; i < L->len; i++){for (j = L->next; j->next != NULL; j = j->next){if (j->data.score > j->next->data.score){temp = j->data;j->data = j->next->data;j->next->data = temp;}}}
}//主函数
int main(int argc, const char* argv[])
{stu a[5] = { {1001,"小张",90},{1003,"小王",95},{1002,"小刘",88},{1005,"小杨",99},{1004,"小邢",89} };Plink L = create();int i;for (i = 0; i < 5; i++){front_insert(L, a[i]);//头插法}output_link(L);stu e = { 1009,"小李",99 };anypos_insert(L, 2, e);output_link(L);anypos_dele(L, 2);output_link(L);nizhi(L);output_link(L);bublu(L);output_link(L);return 0;
}

 

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

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

相关文章

SpringBoot框架在文档管理中的创新应用

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性&#xff0c;遵循…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后&#xff0c;开始我们的第一个监控-监控linux系统。 参考官方文档&a…

最古早的linux发行版,已发行30年!!

最古早的linux发行版&#xff0c;已发行30年&#xff01;&#xff01; 当谈到 Linux 发行版时&#xff0c;大多数人首先想到的可能是像 Ubuntu、Fedora 或 CentOS 这样的知名发行版。然而&#xff0c;在 Linux 的世界中&#xff0c;还有一款古老而稳定的发行版&#xff0c;它以…

SIGformer: Sign-aware Graph Transformer for Recommendation---论文学习笔记

SIGIR 2024 用于推荐的符号感知图像转换器 摘要 在推荐系统中&#xff0c;大多数基于图的方法主要关注用户的正面反馈&#xff0c;而忽视了负面反馈的价值。而将正负反馈结合起来形成符号图可以更全面地理解用户偏好。然而&#xff0c;现有的尝试整合这俩种类型反馈的方法很…

图片压缩工具免费怎么找?归纳了这几个压缩工具

有哪些图片压缩工具免费&#xff1f;在数字化时代&#xff0c;图像已成为我们生活中不可或缺的一部分。无论是网站设计、社交媒体分享还是文件传输&#xff0c;高质量的图片都扮演着重要的角色。但高质量往往意味着大文件体积&#xff0c;这可能会导致加载速度变慢或存储空间不…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

体制内打工人收藏!5款AI写作工具,助你变成单位笔杆子~

对于初入体制内职场的新手或是日常任务繁重、难以抽身撰写文件的同事们&#xff0c;别再让加班的夜晚成为常态&#xff01;现在&#xff0c;就让我揭秘几个高效公文写作宝库&#xff0c;它们能助你迅速掌握公文写作的精髓&#xff0c;海量素材信手拈来&#xff0c;更有快速成文…

8个高清视频素材网站,免费下载。

想要找到免费还能商用的视频素材&#xff0c;一定要收藏好这8个网站&#xff0c;高清、4K高质量&#xff0c;无水印&#xff0c;适合专业剪辑和自媒体伙伴。 1、菜鸟图库&#xff08;免费商用&#xff09; 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库网素材非常丰富&#x…

2024年AI写作工具:10款网站让你告别文章/材料创作困难!

随着AI科技的迅猛跃进&#xff0c;我们正步入一个前所未有的便捷时代&#xff0c;其广泛应用已渗透到生活的每个角落。笔者精心挑选了10款高效AI智能助手&#xff0c;借助这些强大工具&#xff0c;我们不仅能够显著提升工作效率&#xff0c;还能激发无限创意潜能&#xff0c;让…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Cloudreve云盘

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Cloudreve云盘 Cloudreve是一款开源的云存储管理系统&#xff0c;支持本机和第三方存储&#xff0c;提供用户管理、文件上传、下载、分享、在线预览等多种功能&#xff0c;适用于搭建个人和团队的私有云盘服务 …

【CSP】2024第二轮前的准备工作

第二轮成绩还没出&#xff0c;估分有希望但不高&#xff0c;发个帖子涨rp 1. 大纲 目前最新版本2023版NOI大纲 &#xff0c;字字珠玑要细品&#xff0c;比如这次CSP-J第一轮就考到了格雷编码&#xff0c;没有经历GESP逐级洗礼的普娃哪知道这个啊。 2.在线培训 金牌教练在线…

三步教你如何让内容与众不同!

​声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/#1 在当今这个快速变化的市场中&#xff0c;内容的更新与维护成为了一项巨大的挑战。信息的过载导致用户对内容的“获得感”提出了更高的要求&#xff0c;他们不再满足…

UE5 C++: 插件编写04 | 自动增加前缀

准备工作 UObject* Asset UObject* Asset 通常指的是一个指向UObject的指针。UObject是Unreal Engine中的基类&#xff0c;几乎所有的引擎对象都继承自UObject。这个指针可以引用任何派生自UObject的对象&#xff0c;比如蓝图、材质、贴图、音频资源等资产。 如果你看到UObj…

openEuler普通用户su root时Permission denied

openEuler普通用户su root时Permission denied 背景&#xff1a; openEuler默认普通用户是不能通过su切换到root用户的 如果想通过su切换到root&#xff0c;有以下两个解决办法 1、修改/etc/pam.d/su 文件 [rootlocalhost ~]# vim /etc/pam.d/su #修改21行&#xff0c;将“…

微生物多样性数据的可视化技巧

在数据中穿梭找寻答案&#xff0c;是我们在探索微生物世界的过程中必不可少的一环。然而&#xff0c;单调的数据分析报告是否让你感觉枯燥乏味&#xff1f;这时候数据可视化的技术可就要来大展神通咯&#xff01;利用图表和图形唤醒沉睡的数据&#xff0c;科学与艺术的搭配&…

llamafactory0.9.0微调qwen2vl

LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factory GitHubEfficiently Fine-Tune 100+ LLMs in WebUI (ACL 2024) - LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory/blob/main

2.2 信道的极限容量

奈奎斯特定理 香农定理 &#x1f30f;总结

Centos redis下载安装以及redis manager连接详细教程

一、redis下载以安装&#xff1a; 1.切换到home目录下 cd /home&#xff08;/是根目录&#xff0c;./是当前目录 ../是父目录&#xff09; 2.执行wget http://download.redis.io/releases/redis-5.0.2.tar.gz&#xff08;这里&#xff0c;不知道为什么安装6开头的版本在make的…

增强GPT4v的Grounding能力,image-level

论文地址&#xff1a;arxiv.org/pdf/2310.11441 代码地址&#xff1a;

Linux环境的JDK安装

1.搜索可用的jdk yum search jdk/(或者是要安装的版本java-11)2.安装需要的版本 yum install java-11-openjdk.x86_643.验证是否安装成功 java -version4.配置环境变量 通过yum安装的默认路径为&#xff1a;/usr/lib/jvm cd /etc/profile.d/ touch java_home.sh vim java_…