PAT 乙级 1025 反转链表 (25)(25 分)_int first[100005]; // 存放第一条链表的地址-程序员宅基地

技术标签: PAT 乙级  

1025 反转链表 (25)(25 分)

给定一个常数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
#include <stdlib.h>
#include <iostream>
# include <fstream>
//#define DEBUG
using namespace std;

int main()
{	
//	freopen("C:\\1.txt", "r", stdin);
    int first,n,k,temp,i,j,l;
    int data[100005];	// 用数组下标 存放数据 
    int next[100005];	// 用数组下标 存放下一个结点的地址 
    int list[100005];	// 顺序存放顺序的首地址 
    int final[100005];
  	cin >> first >> n >> k;
    for(i=0; i<n; i++)
    {
    	cin >> temp;
       	cin >> data[temp] >> next[temp];   //数组下标作为该节点地址,用data与next分别存放该节点值,以及该节点下一个节点地址 
    }
    l=0;
    while(first!=-1)
    {
        list[l] = first;  // 此时 list 中存储的是 元素首地址的 数组的下标 
        l++;
        first = next[first];
//      cout << list[l-1] << ' ' << first << endl;
    }
    for(i=0;i<l;i++)
    {
        final[i] = list[i];	// 复制 list 方便 list 为 final 进行反转赋值 
    }
    for(i=0;i<(l-l%k);i++)   // l - l%k需要翻转的个数 
    {
        final[i] = list[(i/k)*k+k-i%k-1];   // (i / k)* k 第几次 K, k - i % k -1 相对的要和他翻转的元素下标 
    }
    for(i=0;i<l-1;i++)
    {
        printf("%05d %d %05d\n",final[i],data[final[i]],final[i+1]); // 下个元素的首地址就是前一个元素的尾地址 
    }
    printf("%05d %d %d\n",final[l-1],data[final[l-1]],-1);
 	 return 0;
  
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hello_mr_x/article/details/81672194

智能推荐

Linux 常见特殊符号-程序员宅基地

文章浏览阅读78次。[size=large][b]1,> 重定向输出符号 用法:命令 >文件名 特性:覆盖(当输入文件和输出文件是同一文件,文 件内容被清空;不适合连续重定向) 典型应用:合并文件(cat a b >c);清空文件(cat /dev/null);文件打印2,>> 重定向输出符号 用法:命令 >>文..._linux不同字体下的¥

DXF格式文件导入AD,做成可加工的PCB文件_ad怎么根据dxf文件绘制pcb-程序员宅基地

文章浏览阅读2.4k次。DXF文件导入AD注意事项也可以导入到KEEPOUT或者机械层对于有问题,可以tool菜单,reset,对于导入绿色是报错,相当于线宽不满足规则,没有改变线宽,默认为10mil=0.0127mm_ad怎么根据dxf文件绘制pcb

如何通过CanApe进行变量的测量和标定_canape怎么添加标定量-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏11次。1、展开对应Device下的A2L文件,可见下面的测量量和标定量2、点击Start->测量设置3、将 测量量 尽量平均的分配到各个XCP Event中。添加方法如下双击需要添加的测量量即可添加到对应的Xcp Event中4、回到主界面,按如下方法将测量量添加到图形化窗口中,然后start5、右键,将图形调整到合适大小如下图所示。_canape怎么添加标定量

基于角色、标记及BLP模型的多级访问控制-B/S架构OA系统应用_blp规则 权限控制-程序员宅基地

文章浏览阅读4.1k次。 福建电脑2007年第2期 基于角色、标记及BLP模型的多级访问控制—B/S架构OA系统应用(桂林电子科技大学 计算机系,广西桂林 541004 ) 摘 要: 本文基于BLP模型的安全性和角色访问模型的简便性,结合两者优点,克服其缺点。根据办公自动化(OA)系统的实际情况设计一种新的模型。BLP模型的读写分离,角色可以授权和回收,角色层次机制,标记等保证信息_blp规则 权限控制

libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用问题解决_undefined reference to `uuid_generate-程序员宅基地

文章浏览阅读2.3k次,点赞8次,收藏29次。在ros项目编译的过程中,有时会出现/usr/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0’的错误。经查找原因发现是都是由于ros和anaconda的兼容问题引起的,ros编译出现这种错误均可用该套路解决。问题解决过程:1、从报错中提取两个关键字:这里为libapr-1.so.0和uuid2、查找以上两个库在电脑中的位置:locate libapr-1.so.0显示结果/usr_undefined reference to `uuid_generate

ov5640_mipi.c分析_ov5640怎么设置mipi输出-程序员宅基地

文章浏览阅读2.3w次,点赞12次,收藏78次。在ov5640芯片手册中看到这样一句话:The OV5640 supports both a digital video parallel port and a serial MIPI port.所以ov5640既支持数字并口视频传输,同样支持mipi接口规范。摄像头插入到开发板上面的时候,如果有匹配的驱动程序,就会调用到probe函数,先从probe函数来分析。(_ov5640怎么设置mipi输出

随便推点

用matlab绘制信源熵函数曲线,信息理论编码之实验一 绘制二进制熵函数曲线.ppt...-程序员宅基地

文章浏览阅读2.2k次。信息理论编码之实验一 绘制二进制熵函数曲线一、实验目的 熟悉工作环境及工具箱 掌握绘图函数的运用 理解熵函数表达式及其性质 二、实验原理 熵 自信息量是针对信源的单个符号而言的,而符号是随机发生的,因此单个符号的不确定性不足于代表信源的不确定性性质,为此,可对所有符号的自信息量进行统计平均,从而得到平均不确定性。 熵的表示 注意的问题 熵是自信息量的统计平均,因此单位与自信息量的单位相同,与熵公..._用matlab制作信息熵函数曲线

重复测量设计计算机结果分析,样本量估算4.7 | 重复测量设计方差分析样本量估算...-程序员宅基地

文章浏览阅读1.6k次。【例1】某研究拟调查新型降压药A对收缩压的影响,比较高血压患者服用新型降压药A与标准降压药后,随着时间推移,收缩压平均值之间是否有差异。患者服用新型降压药A后每天测一次血压,连续测6天。既往研究表明服用标准降压药的受试者平均收缩压为143.0mmHg, 标准差为25mmHg, 同一个受试者相邻测量点间的自相关系数均为0.76。预试验中服用新型降压药A后平均收缩压较标准降压药降低了14.3mmHg,..._单组重复测量设计样本含量估算表

VB数组详解-程序员宅基地

文章浏览阅读750次,点赞2次,收藏4次。一、数组的概念数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。一般情况下,数组的元素类型必须相同,可以是前面讲过的各种基本数据类型。但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型。数组和变量一样,也是有作用域的,按作用域的不同可以把数组分为:过..._vb数组的概念

php如何采集动态页生成的静态数据,PHP-php如何实现自动生成静态页 或提供思路...-程序员宅基地

文章浏览阅读51次。require_once(“db.php”);$title=$_POST[“title”];$content=$_POST[“content”]; //获得表单变量//以下建立一文本文档,其值自动计数$countfile="count.txt";if(!file_exists($countfile)){fopen($countfile,"w"); //如果此文件不存在,则自动建立一个}$fp=fo..._$title = $_post['title']; $content = $_post['content'];

QT——在已经安装配置好QT的情况下如何更新QT的组件_已安装的qt怎么更新安装组件。离线版qt安装-程序员宅基地

文章浏览阅读1.6k次。(一)找QT在线安装镜像地址1、打开 http://download.qt.io/static/mirrorlist/,这里面是各国的镜像站点2、我选了清华的站点,点HTTP3、按下面的路径进入qt文件夹online/qtsdkrepository/windows_x86/root/qt/ 然后就在下图这个界面复制当前地址(二)QT更新组件的设置是不能在QT里面直接找到的,需要用到MaintenanceTool.exe文件,这个文件就在你安装QT的路径下面,如下图所示..._已安装的qt怎么更新安装组件。离线版qt安装

计算机视觉论文_jain a k, duin r p w, mao j. statistical pattern r-程序员宅基地

文章浏览阅读3.6k次。找到了一个很好的博客,作者很详尽的总结了一系列有深刻影响的计算机视觉方面的论文,希望有更多的人能够看过这些经典的论文。在此转载改博客,在此向水木上表示深深的敬意,只有有更多像这样善于总结和分享的人才能给我们更好的网络学习环境。前言:最近由于工作的关系,接触到了很多篇以前都没有听说过的经典文章,在感叹这些文章伟大的同时,也顿感自己视野的狭小。 想在网上找找计算机视觉界的经典文章汇总,一_jain a k, duin r p w, mao j. statistical pattern recognition: a review[j]. i

推荐文章

热门文章

相关标签