PAT乙级 1025 反转链表

news2024/11/25 14:46:31

给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即最后不到 K 个元素不反转。

输入格式:
每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数 N (≤10
5
)、以及正整数 K (≤N),即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用 −1 表示。

接下来有 N 行,每行格式为:

Address Data Next
其中 Address 是结点地址,Data 是该结点保存的整数数据,Next 是下一结点的地址。

输出格式:
对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

输入样例:
00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218
输出样例:
00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

解题思路:首先我们这道题方便的还是要按照数组的形式排列,简单点说就是把链表转换成顺序表,因为顺序表之间的逻辑顺序刚好和内存之间的顺序等同,方便查找,逆序也容易,这里有个坑,就是他给的数不一定是总数,要自己遍历一遍求总结点数量。c语言代码如下:

#include <stdio.h>
typedef struct link{
    int addr;
    int data;
    int next;
}node;
node b[100004],a[100004];     //这里我想过用栈但是不行,我的编译器开不来那么大我就用全局数组了,或者自己malloc也行 我嫌麻烦
int input(node *a,int n)             //自己写的一个输入函数
{
	node t,*lin;
	for(int i=0;i<n;i++)
	{
	scanf("%d %d %d",&(t.addr),&(t.data),&(t.next));
	lin=a+t.addr;
	*lin=t;
    }
    return 1;	
}
int adjust( node *a,int start,node *b)       //把链表结构改成顺序表
{
	node *lin;
	int count=0;
	lin=a+start;
	while(lin->next!=-1)
	{
		b[count++]=*lin;
		lin=a+lin->next;
	}
	b[count++]=*lin;
	return count;
	
}
int output(node *a,int n)         //输出顺序表
{
	int  i;
	for(i=0;i<n-1;i++)
	printf("%05d %d %05d\n",a[i].addr,a[i].data,a[i].next);
	printf("%05d %d %d\n",a[i].addr,a[i].data,a[i].next);
	return 1;
}
int reverse(node *a,int count,int k)   //把顺序表转换
{
	int i,j;
	node temp;
	for(i=0;i<count/k;i++)
	{
		for(j=i*k;j<i*k+k/2;j++)
		{
			temp=a[j];
			a[j]=a[k*(i+1)-(j-i*k)-1];
			a[k*(i+1)-(j-i*k)-1]=temp;
		}
		
	}
	for(i=0;i<count-1;i++)
	{
		a[i].next=a[i+1].addr;
	}
	a[i].next=-1;
	return 1;
}
int main()
{
	int n,k,start,i,j,count=0;
	scanf("%d %d %d",&start,&n,&k);
	input(a,n);
	count=adjust(a,start,b);
	reverse(b,count,k);
	output(b,count);
    return 0;
}


在这里插入图片描述

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

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

相关文章

web自动化上传文件

1&#xff0c;web 自动化文件上传不要太简单 熟悉 web 自动化测试的大佬应该都懂&#xff0c;当采用 js 调用原生控件进行文件上传的时候&#xff0c;最常用的是使用 pywin32 等系统交互库。 当看到 pywin32 那丑陋的 api 封装只能爆粗口。就为了输入一个文件地址&#xff0c;…

微生信 -- 0代码科研绘图,助力发高分文章

1&#xff0c;粘贴数据&#xff0c;一键出图 www.bioinformatics.com.cn微生信云平台以220多款在线绘图、分析模块为基础&#xff0c;致力于0代码在线分析数据&#xff0c;0代码在线绘制科研图片。让不会编写代码的科研工作者&#xff0c;贴贴数据&#xff0c;点点鼠标就能够进…

大模型中的LM-BFF

LM-BFF paper: 2020.12 Making Pre-trained Language Models Better Few-shot Learners Prompt: 完形填空自动搜索prompt Task: Text Classification Model: Bert or Roberta Take Away: 把人工构建prompt模板和标签词优化为自动搜索 LM-BFF是陈丹琦团队在20年底提出的针对…

基于yolov2深度学习网络的血细胞检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1YOLOv2算法原理 4.2 YOLOv2网络结构 4.3 血细胞检测算法实现 数据集准备 数据预处理 网络训练 模型评估与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MAT…

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间&#xff08;右手坐标系、透视相机&#xff09;2、裁剪空间&#xff08;左手坐标系、且转化为了齐次坐标&#xff09;3、屏幕空间&#xff08;把裁剪坐标归一化设置&#xff09;4、从观察空…

Java学习——设计模式——结构型模式1

文章目录 结构型模式代理模式适配器模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能&#xff0c;但结构型模式不仅仅简单地使用继承&#xff0c;而更多地通过组合与运行期的动态组合来…

开关量信号隔离器在水泥厂的应用

安科瑞 崔丽洁 摘要&#xff1a;在水泥厂生产过程中&#xff0c;需要皮带与提升机进行运输物料&#xff0c;回转下料器进行投放物料。其中涉及大量电动机相关的机械运动&#xff0c;对这些机械运动状态进行检测&#xff0c;可以及时发现问题避免造成事故。针对机械位置检测&…

前端图片适配不同屏幕方案

预备知识&#xff1a; 设备独立像素,以下图的iphone12 Pro为例&#xff0c;390*844表示的就是设备独立像素&#xff08;DIP&#xff09;,也可以理解为CSS像素 物理像素&#xff08;设备像素&#xff09;&#xff0c;就是屏幕的分辨率&#xff0c;显示屏就是由一个个物理像素…

基于EMD的滚动轴承故障诊断算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1EMD的基本原理 固有模态函数&#xff08;IMF&#xff09; 筛分过程 4.2 基于EMD的滚动轴承故障诊断算法 信号预处理 EMD分解 特征提取 故障诊断 5.算法完整程序工程 1.算法运行效…

Python爱心光波完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

3d导入模型怎样显示原本材质---模大狮模型网

要在导入3D模型时保留原本的材质&#xff0c;您可以尝试以下方法&#xff1a; 导入前检查文件格式&#xff1a;确保您所使用的3D软件支持导入模型的文件格式。不同的软件对文件格式的支持有所差异&#xff0c;选择正确的文件格式可以更好地保留原始材质。 使用正确的材质库&am…

pip freeze 导出的requirements.txt文件含有 @file

使用 pip freeze > requirements.txt 导出的文件中含有 file&#xff1a;// 使用这个文件在其他环境下安装就会出现 找不到路径的错误 原因是这种方法生成的文件只能用于本地环境&#xff0c;无法供他们使用 使用以下方式生成文件 解决&#xff1a;pip list --formatfreeze …

【数据库系统概论】第6章-关系数据库理论

真别看吧&#xff0c;抄ppt而已啊 文章目录 6.1 引言6.2 规范化6.2.1 函数依赖6.2.2 码6.2.3 范式&#xff08;Normal Form&#xff09;6.2.4 BC范式6.2.5 规范化小结 6.1 引言 我们有这样一张表&#xff1a; but 为啥这样设计呢&#xff1f;由此引出怎样设计一个关系数据库…

C++的多继承和虚继承

目录 多继承的定义和用法定义多继承多继承中派生类对象的内存布局访问基类成员多继承带来的问题 虚继承虚继承的语法虚继承对象的内存布局虚继承中的构造虚继承的缺点 多继承的定义和用法 C支持多继承&#xff0c;即一个派生类可以有多个基类。 很多时候&#xff0c;单继承就…

Spring boot:3.X + Security OAuth2 自定义登录页面、登出后跳转到登录页

本文描述了基于 Spring Oauth2 的 code 模式&#xff0c;实现登陆同时授权、自定义登录界面、登出页面的功能。 1.Maven依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactI…

文件打包上传linux服务器,通过http协议url下载

背景&#xff1a;服务器部署tomcat&#xff0c;已经运行项目 直接在编译后的class文件新建文件&#xff0c;把想要下载的文件放入&#xff0c; 编译后新建文件存放 访问时&#xff0c;加zl/xxx.zip

Springboot拦截器及统一异常处理

文章目录 一、Java中异常相关概念1、异常类2、异常处理方法3、注意事项4、自定义异常 二、配置全局异常处理1、统一返回体定义2、定义异常处理实现类3、全局异常处理类 三、Springboot拦截器1、定义拦截器2、注册拦截器 四、验证效果 一、Java中异常相关概念 1、异常类 Throw…

微信小程序开发系列-07组件

在开发小程序的过程中会遇到一个常见的问题&#xff0c;怎样将其他同事提供的样式或者第三方的样式载入自己的工程&#xff0c;本文基于这个问题为索引&#xff0c;探索下小程序的组件。 什么是组件 组件是视图层的基本组成单元。组件自带一些功能与微信风格一致的样式。一个…

C++标准模板库(STL)

标准模板库&#xff08;STL&#xff09;是一组C模板类&#xff0c;提供常见的编程数据结构和函数&#xff0c;如列表、堆栈、数组等。它是一个容器类、算法和迭代器的库。它是一个通用库&#xff0c;因此&#xff0c;它的组件是参数化的。模板类的相关知识是使用STL的先决条件。…

vivado set_max_delay案例分析

案例分析 在一些设计中&#xff0c;某些信号在特定模式下具有恒定值。例如&#xff0c;在功能模式下&#xff0c;测试信号不切换&#xff0c;因此与VDD或VSS相连这取决于它们的活动水平。这也适用于在设计完成后不切换的信号已通电。同样&#xff0c;今天的设计有多种功能模式…