成绩排序(练习链表)

(图片别看错了,右边的是输出样例)

前几天学了学链表,也把一些ADT格式敲了敲,但是还是没有实际用过

然后就选了一道排序题,顺便试了试插入排序

以前只知道有插入排序这个东西,但是用数组实现的话感觉效率会偏低,现在知道链表之后就知道该怎么玩了(乐)

代码如下:

#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{ElemType data;ElemType ID;struct LNode * next;
}LinkList;LinkList * creat(int n)
{LinkList * head, * node, * end;//定义头节点,普通节点,尾部节点head = (LinkList *)malloc(sizeof(LinkList));//分配地址end = head;for(int i = 0; i < n; i++){node = (LinkList *)malloc(sizeof(LinkList));//分配地址scanf("%d%d", &node->ID, &node->data);end->next = node;end = node;}end->next = NULL;//结束创建return head;
}//创建长度为n的链表
void DestroyList(LinkList * head)
{LinkList * end = head;do{end = end->next;free(head);head = end;}while(end != NULL);return;
}//销毁链表int main(void)
{int N;scanf("%d", &N);LinkList * head = creat(1);//插入排序for(int i = 1; i < N; i++){int t_ID, t_data;scanf("%d%d", &t_ID, &t_data);for(LinkList * node = head->next, * f_node = head; 1; node = node->next, f_node = f_node->next){if(node == NULL || t_data > node->data || (t_data == node->data && t_ID < node->ID)){LinkList * tmp = (LinkList *)malloc(sizeof(LinkList));f_node->next = tmp, tmp->next = node;tmp->data = t_data, tmp->ID = t_ID;break;}}}//输出int tmp = 1, count = 1;for(LinkList * node = head->next, * f_node = head; 1; ){printf("%d %d %d\n", tmp, node->ID, node->data);node = node->next, f_node = f_node->next;if(node == NULL)  break;else{count++;if(f_node->data > node->data)  tmp = count;}}DestroyList(head);return 0;
}

效率还是比较高的(不知道是不是我的错觉),对1000个数据进行排序的时间不超过8ms

一些废话:

昨天晚上上思政课,差点给我干昏过去,整什么课上辩论赛,还要提问,太抽象了,我一个理科生看着马院等等院的大佬在那边讲什么因然,什么实然。能不能对我这种不对哲学有一点点兴趣的绯雾温柔点,md我看算法书都惊心胆颤

辩题是有没有普适(世)性的价值观,在那边咬文嚼字

简单来说不就是证明存在性的问题嘛,那坚持存在的一方举出例子,反方争辩不存在不就行了(doge)

所以说这种东西就是不如高数让我感觉脚踏实地,果然我不是学文科的料

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—18.四数之和【中等】

2023每日刷题&#xff08;四十一&#xff09; Leetcode—18.四数之和 实现代码 class Solution { public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> ans;sort(nums.begin(), nums.end());int n …

供应链攻击的类型和预防

供应链攻击是一种面向软件开发人员和供应商的新兴威胁&#xff0c;目标是通过感染合法应用分发恶意软件来访问源代码、构建过程或更新机制。 供应链攻击是威胁行为者通过利用软件供应链中的漏洞进入组织网络的一种网络攻击&#xff0c;供应链攻击的目标可以是软件开发过程中的…

11月28日星期二今日早报简报微语报早读

11月28日星期二&#xff0c;农历十月十六&#xff0c;早报微语早读。 1、广电总局&#xff1a;有线电视终端系统默认设置应为“开机进入全屏直播”&#xff1b; 2、我国下一代互联网技术专利申请量10年超170万件&#xff1b; 3、字节收缩旗下游戏业务&#xff1a;已上线的游…

MIGO收货报替代“ZF002“, 步骤““ 中存在语法错误消息号 GB032错误

MIGO收货报替代"ZF002", 步骤"" 中存在语法错误消息号 GB032错误。替代"ZF002", 步骤"" 中存在语法错误消息号 GB032诊断 在 ABAP 代码生成过程中&#xff0c;在替代ZF002中发现了语法错误。 系统响应 未为该布尔陈述生成 ABAP 代码&…

Django回顾2

目录 一.HTTP 1.URL介绍 2.格式&#xff1a; 3.补充&#xff1a; 二.web框架 1.什么是框架 2.什么是web框架 3.wsgi协议 基于wsgi协议的web服务器&#xff1a; 4.协议是怎么规定的 三.Django 1.MVC与MTV模型&#xff08;所有框架其实都遵循MVC架构&#xff09; 2.…

快速下载大文件?试试这些aspera替代方案!

在现代互联网社会中&#xff0c;海量数据的传输与共享已经成为了必不可少的一部分。然而&#xff0c;上传、下载大文件的速度往往受到网络带宽的限制&#xff0c;尤其在跨国传输时更是如此。这时就需要一些专业的工具来帮助我们解决这个问题。Aspera作为一款流行的文件传输软件…

vscode中tasks.json文件使用的预定义变量及国产统信操作系统UOS下配置一个任务显示相关预定义变量的案例

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 vscode中使用task.jsons配置任务&#xff0c;配置文件是json格式&#xff0c;为了方便配置&#xff0c;vscode支持一些预定义的变量使用&#xff0c;这些变量用于匹配时指定相关工作环境。 二、v…

云服务器-从零搭建前后端服务(自动化部署、数据库)

云服务器-从零搭建前后端服务&#xff08;自动化部署、数据库&#xff09; 免密登陆 第一步就是能免密快速登录到服务器 可以直接使用 FinalShell、MobaXterm 或 XShell 等进行连接 如下方法是直接用命令行操作 安装 Remote - SSH 插件&#xff0c;即可在 VSCode 中进行配置…

人工智能即将彻底改变你使用计算机的方式

文章目录 每个人的私人助理“Clippy 是一个机器人&#xff0c;而不是特工。”卫生保健“一半需要心理健康护理的美国退伍军人没有得到治疗。”教育生产率娱乐和购物科技行业的冲击波技术挑战隐私和其他重大问题 今天我仍然像保罗艾伦和我创办微软时一样热爱软件。但是&#xff…

计算4人队形的最可能分布

2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 3 3 3 x 3 3 2 2 2 1 2 2 2 2 2 1 2 2 在6*6的平面上2个点随机分布&#xff0c;有3种分布方式&#xff0c;2a1&#xff0c;2a2&#xff0c;2a3&#xff0c;占比为1&#xff1a;5&#xff1a;1. 3 3 …

Linux处理文件常见命令

目录 1 cp 2 rm 3 zip与unzip 3.1 zip 3.2 unzip 4 cd 5 ls 6 chmod 7 scp 7.1 文件在你操作的机器上&#xff0c;你要传给另一个机器 7.1.1 文件 7.1.2 文件夹 7.2 文件在另一个机器上&#xff0c;你要把文件搞到你操作的机器上 7.2.1 文件 7.2.…