1074 Reversing Linked List(23行代码+详细注释)

news/2025/1/16 1:54:11/

分数 25

全屏浏览题目

切换布局

作者 CHEN, Yue

单位 浙江大学

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.

Input Specification:

Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (≤105) which is the total number of nodes, and a positive K (≤N) which is the length of the sublist to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.

Then N lines follow, each describes a node in the format:

Address Data Next

where Address is the position of the node, Data is an integer, and Next is the position of the next node.

Output Specification:

For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.

Sample Input:

00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

Sample Output:

00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<bits/stdc++.h>
using namespace std;
const int N=100009;
int main(){
    int add,n,k;
    cin>>add>>n>>k; 
    int data[N],next[N],res[N];//数据,下一地址,结果数组 
    for(int i=0;i<n;i++){//输入 
        int a,da,ne;
        cin>>a>>da>>ne;
        data[a]=da;
        next[a]=ne;
    }
    int cur=0;
    while(add!=-1){//从第一个地址开始按序储存 
        res[cur++]=add;
        add=next[add];
    }
    for(int i=0;i+k<=cur;i+=k)reverse(res+i,res+i+k);//反转 
    for(int i=0;i<cur-1;i++)printf("%05d %d %05d\n",res[i],data[res[i]],res[i+1]);//五位输出 
    printf("%05d %d -1\n",res[cur-1],data[res[cur-1]]);//最后一个单独输出 
    return 0;
}


http://www.ppmy.cn/news/97370.html

相关文章

什么是用户态和内核态?用户态切换内核态会有什么影响?

一、什么是用户态和内核态&#xff1f; 简单来讲&#xff0c;像使用java开发时&#xff0c;调用java中封装的普通方法程序时属于用户态&#xff0c;而操作内存或者cpu比如 new Thread()创建一个线程&#xff0c;Class.forName(xxx.class)这种属于内核态 用户态和内核态是操作系…

跟我学c++中级篇——注解

一、注解是什么 其实中这里分析注解的原因是和反射有些关系的&#xff0c;当然实现注解的手段可能有很多种&#xff0c;但一般来说&#xff0c;注解实现都和反射或多或少有着关系。那么什么是注解&#xff1f;注解就是对类或方法等的元数据描述。所以注解就是一种元数据&#…

网络编程(TCP与UDP协议)

文章目录 1. 网络编程1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一&#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二&#xff1a;端口号2.4 通信要素三&#xff1a;网络通信协议 3. 传输层协议&#xff1a;TCP与UD…

【STL】list的模拟实现

目录 前言 结构解析 默认成员函数 构造函数 拷贝构造 赋值重载 析构函数 迭代器 const迭代器 数据修改 insert erase 尾插尾删头插头删 容量查询 源码 前言 &#x1f349;list之所以摆脱了单链表尾插麻烦&#xff0c;只能单向访问等缺点&#xff0c;正是因为其…

电子器件系列38:mos管散热片

板子上需要用到一个封装为to220的mos管&#xff0c;还得立起来散热&#xff0c;得要加一个散热片。 散热片简介&#xff0c;分类&#xff1f;用途&#xff1f;如何使用&#xff1f;封装&#xff1f;使用注意事项&#xff1f; 简介&#xff1a; mos散热片是一种给电器中的易发热…

VSLAM视觉里程计总结

相机模型是理解视觉里程计之前的基础。视觉里程计&#xff08;VIO&#xff09;主要分为特征法和直接法。如果说特征点法关注的是像素的位置差&#xff0c;那么&#xff0c;直接法关注的则是像素的颜色差。特征点法通常会把图像抽象成特征点的集合&#xff0c;然后去缩小特征点之…

Radxa ROCK 5A RK3588S 开箱 vs 树莓派

Rock5 Model A 是一款高性能的单板计算机&#xff0c;采用了 RK3588S (8nm LP 制程&#xff09;处理器&#xff0c;具有 4 个高达 2.4GHz 的 ARM Cortex-A76 CPU 核心、4 个高达 1.8GHz 的 Cortex-A55 内核和 Mali-G610 MP4 GPU&#xff0c;支持 8K 60fps 视频播放&#xff0c…

Oracle数据库表空间数据删除以及数据库重启

-删除空的表空间&#xff0c;但是不包含物理文件 drop tablespace tablespace_name; –删除非空表空间&#xff0c;但是不包含物理文件 drop tablespace tablespace_name including contents; –删除空表空间&#xff0c;包含物理文件 drop tablespace tablespace_name includi…