【PAT】B1025 反转链表

2023-05-16

给定一个常数 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

 思路:

这个题是真的坑,题目没有说清楚有可能会存在不属于 L 上的节点,这样就导致输出的节点可能会比输入的节点要少,所以可以用 map 记录好首地址和值和下一节点对应关系后,将该条链表所有的节点地址放入一个数组中(不使用 map 直接用数组 hash 存储也是可以的)。其次是一定要记得最后链表逆转时对应的下一节点地址(Next)也会发生改变,在题目中就可以处理为直接输出下一节点的地址,而不是之前存储在 map 中当前地址和下一节点地址的对应关系。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
const int maxn = 1e5 + 7;
int res[maxn];
map<int, int> dat, nxt;
int main()
{
    int a, n, k, tmp;
    cin >> a >> n >> k;
    int p, q;
    for(int i = 0; i < n; i++){
        cin >> tmp >> p >> q;
        dat[tmp] = p;
        nxt[tmp] = q;
    }
    int cnt = 0;  //有可能存在不属于这条链表的节点
    while(a != -1){
        res[cnt++] = a;
        a = nxt[a];
    }
    for(int i = 0; i < (cnt - cnt % k); i += k)
        reverse(res + i, res + i + k);
    for(int j = 0; j < cnt - 1; j++)
        printf("%05d %d %05d\n", res[j], dat[res[j]], res[j + 1]);  //此时输出的 Next 不再是之前的,而是重新链接后的
    printf("%05d %d -1\n", res[cnt - 1], dat[res[cnt - 1]]);
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【PAT】B1025 反转链表 的相关文章

  • 编译openssl时发生错误

    编译openssl时发生错误 error OPENSSL ALGORITHM DEFINES no longer supported 原理参考 xff08 由于同时安装了openssl 1 1和openssl 1 0 xff09 版本 xf
  • Linux 非源码安装 xrdp

    基本环境说明 我的是Centos 7 mini 或者 Ubuntu最小化安装 xff0c 想通过mstsc连接到xrdp xff0c 再通过xrdp连接到 Centos 7 mini xff0c 不安装桌面 xff0c 只打开 xterm
  • Selenium常用实战功能指南

    文章目录 自动化前言元素定位的几种方法id定位name定位link text定位partial link text定位xpath定位 xff08 重点 xff09 css定位常见问题 元素操作的常用方法基本方法send keys textg
  • RISC-V指令集架构------RV32I基础整数指令集

    0 基本整数指令集的分类 RISC V指令集分为基础指令集和扩展指令集 xff0c 此外又根据不同的处理器位宽分为32位 64位和128位指令集 xff0c 比如RV32I就表示32位处理器的基本整数指令集 xff0c 此外 xff0c 为
  • 如何在ubuntu22.04版本上安装libssl1.1?

    直接使用sudo apt get install会提示找不到软件包输入一下命令即可 xff1a echo 34 deb http security ubuntu com ubuntu focal security main 34 sudo
  • vue2学习总结一

    1 vue介绍 Vue是一套用于构建用户界面 xff08 数据 gt 界面 xff09 的渐进式 xff08 简单应用 xff08 一个轻量小巧的核心库 xff09 gt 复杂应用 xff08 可以引入各种各样的Vue插件 xff09 xf
  • c++判断字符串是否为回文

    回文是指正读反读均相同的字符序列 如 34 abba 34 和 abdba 均是回文 xff0c 但 34 good 34 不是回文 Solution1 使用reverse 函数将字符串反转 xff0c 与原字符串比较 xff0c 若相同
  • 多车调度问题(大疆Robot Master)——ROS键盘控制失灵,小车无法收敛定位,路径规划出错

    问题1 ROS键盘控制小车失灵 具体就是 xff1a 用键盘左右转小车 xff0c 速度贼快 xff0c 而且方向不正确 xff0c 检查发现是控制模块失灵 xff0c 有可能是内部测量元件 xff08 陀螺仪等 xff09 烧了 xff0
  • 浏览器跨域-原因及解决方案

    1 浏览器跨域 如何判断一个浏览器的请求是否跨域 xff1f 在A地址 xff08 发起请求的页面地址 xff09 向B地址 xff08 要请求的目标页面地址 xff09 发起请求时 xff0c 如果A地址和B地址在 xff1a 协议 域名
  • 使用moment.js时设置中文无效

    背景 xff1a 使用 script 标签 xff0c 在 html 页面中引入了 moment js xff0c 使用时发现页面中 moment js 相关的文字显示的是英文 xff08 eg xff1a 3 days ago xff09
  • virtual stdio 2017 问题

    严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB8020 无法找到 Visual Studio 2010 的生成工具 平台工具集 61 v100 若要使用 v100 生成工具进行生成 xff0c 请安装 Visual Stud
  • 中国天气网天气api接口 天气预报调用方法 2020

    说明 百度了很久没有找到免费的天气 API 不是收费就是接口打不开了 最后终于找到了天气api https www tianqiapi com 可免费使用 最重要的是天气数据和中国天气网一致 城市编号也是用的天气网的 这样就方便多了 体验了
  • [路由][教程]OpenWrt通过LAN连接上级路由做交换机+无线功能教程

    1 前言 上级路由为ikuai软路由 xff0c 数据处理交给软路由来做 xff0c OpenWrt运行在路由器上 xff0c 通过LAN连接上级路由从而只做WIFI接收发送功能 此教程只能将LAN作为交换机使用 xff0c WAN口不行
  • [路由][教程]OpenWrt设置为交换机+无线功能教程

    1 前言 上级路由为ikuai软路由 xff0c 数据处理交给软路由来做 xff0c OpenWrt运行在路由器上 xff0c 通过LAN连接上级路由从而只做WIFI接收发送功能 2 需求 路由的LAN和WAN全部作为交换机使用无线WIFI
  • CV学习笔记-特征提取

    特征提取 1 概述 图像中常见的特征有边缘 角 区域等 通过各属性间的关系 xff0c 改变原有的特征空间 xff0c 例如组合不同的属性得到新的属性 xff0c 这样的处理叫做特征提取 注意特征选择是从原始的特征数据集中选择出子集 xff
  • CV学习笔记-深度学习

    深度学习 1 神经网络 1 概述 引例 xff1a 生物神经网络作用机理 生物神经网络的基本工作原理 xff1a 一个神经元的输入端有多个树突 xff0c 主要是用来接收输入信息的 输入信息经过突触处理 xff0c 将输入的信 息累加 xf
  • Mybatis-Plus条件构造器笔记

    Mybatis Plus条件构造器笔记 Mybatis Plus官方文档 xff1a https baomidou com pages 10c804 本文主要讨论Mybatis Plus条件构造器的区别和用法 QueryWrapper Up
  • 日常刷题 (0)

    牛客刷题 1 即使不进行强制类型转换 xff0c 在进行指针赋值运算时 xff0c 指针变量的基类型也可以不同 xff1f 答 xff1a 错 xff0c 指针变量的赋值只能赋予地址 xff0c 决不能赋予任何其它数据 xff0c 否则将引
  • coursera C程序进阶 第二周 #6

    题目 xff1a 流感传染 有一批易感人群住在网格状的宿舍区内 xff0c 宿舍区为n n的矩阵 xff0c 每个格点为一个房间 xff0c 房间里可能住人 xff0c 也可能空着 在第一天 xff0c 有些房间里的人得了流感 xff0c
  • 大数据学习路线图(旧)

    一 入门准备 1 linux操作基础 1 Linux的介绍 xff0c Linux的安装 xff1a VMware Workstation虚拟软件安装过程 CentOS虚拟机安装过程 2 Linux的常用命令 xff1a 常用命令的介绍 常

随机推荐

  • Linux网络编程:状态机

    Linux网络编程 xff1a 状态机 状态机基本概念介绍状态机的特征状态机的要素注意 xff01 为什么在网络编程中需要状态机 xff1f 状态机基本概念介绍 首先我们简单的介绍一下状态机的基本概念 有限状态机是一种用来进行对象行为建模的
  • Ubuntu 20.04 安装 cuda9.0不成功如何解决

    cuda9 0需要低版本gcc才能兼容 xff0c 试了很多教程 xff0c 最终参考以下链接安装成功 xff0c 粗略记录一下 xff0c 免得下次又采坑 1 安装低版本gcc xff1a gcc 5 4 0 参考以下链接 xff1a 不
  • (八)linux中断实现

    目录 一 linux中断的实现二 中断号三 中断的标志四 中断源对应的中断服务程序五 中断服务程序与原子上下文六 等待队列七 附录 一 linux中断的实现 span class token macro property span clas
  • i3wm 屏幕配置踩坑

    i3wm 屏幕配置踩坑 前言踩坑 前言 自从18 19年开始正式使用linux作为我的开发系统就一直没有换回windows 从一开始的 ubuntu 到后来的manjaro 感觉越来越有意思可玩性很高 至于我我什么不换回windows 原因
  • 这个Python库太强了,竟然能把图片,视频无损清晰放大!

    这几天在逛GitHub的时候发现了一个非常牛逼的库 xff0c 竟然有逆天的功能 xff0c 一个用Python做的库 xff0c 利用机器学习算法把图片无损的放大很多倍 这个库叫video2x xff0c 目前收获1500颗星 xff0c
  • 字符串和枚举的互相转化

    字符串和枚举的互相转化 字符串转枚举枚举转字符串总结 字符串转枚举 提示 xff1a 关键代码Enum Parse 代码如下 xff08 示例 xff09 xff1a string str span class token operator
  • CentOS7 安装mysql(YUM源方式)

    CentOS7 安装mysql xff08 YUM源方式 xff09 1 下载mysql源安装包 wget http dev mysql com get mysql57 community release el7 8 noarch rpm
  • Linux(5)---Linux中nano命令

    nano是一个字符终端的文本编辑器 xff0c 有点像DOS下的editor程序 它比vi vim要简单得多 xff0c 比较适合Linux初学者使用 某些Linux发行版的默认编辑器就是nano nano命令可以打开指定文件进行编辑 xf
  • Centos7安装配置桌面环境xfce

    1 centos最小化安装之后由于没有桌面环境 xff0c gnome太大 xff0c 所以找一个小的桌面环境用于一些不方便命令行的操作 2 首先是连接到网络 xff08 不详细展开了 xff09 3 安装桌面环境 yum groupins
  • 利用RSA+AES 前后端对数据进行加密处理 -- 整体思路

    利用RSA 43 AES 前后端对数据进行加密处理 整体思路 前言RSA加密算法RSA简介RSA缺点 AES加密算法AES简介AES缺点 RSA 43 AES 整体流程 前言 目前项目中需要对接口中的一些参数进行加密处理 xff0c 考虑了
  • centos7安装FreeSwitch,以及设置Freeswitch开机自启

    一 下载指定版本的freeswitch cd usr local src git clone branch v1 10 7 https github com signalwire freeswitch git 也可以下载1 10 7的压缩包
  • [iOS] TableViewCell 自适应高度

    说明 TableViewCell 几乎是必用控件 xff0c 使用 TableViewCell 免不了计算其 cell 高度 xff0c 网上也有非常多关于 TableViewCell 高度自适应的文章 xff0c 自己也尝试总结了计算ce
  • Tmux 使用教程

    转载自Tmux 使用教程 作者 xff1a 阮一峰 URL xff1a http www ruanyifeng com blog 2019 10 tmux html Tmux 1 Tmux 是什么 xff1f 1 1 会话与进程1 2 Tm
  • MacOS 下 VScode 编译运行 C/C++ (ACM向)简单粗暴

    VSCode 的下载 安装 在 VSCode 官网 点击 Download for Mac 开始下载 xff0c 之后双击下载完成的文件等待一会就安装好了 必备插件安装 VSCode 启动后 xff0c 点击左侧最下的方块形按钮 xff08
  • 写在2019年ACM-ICPC亚洲区域赛宁夏站之后——一只菜鸡的ACM生涯

    写在2019年ACM ICPC亚洲区域赛宁夏站之后 一只菜鸡的ACM生涯 一晃时间就过去了 xff0c 接触ACM也将近一年半的时间 在这段时间里 xff0c 有过找不出来bug的难受体验 xff0c 也有过茅塞顿开的兴奋激动 xff1b
  • win10下安装Anaconda3后cmd中运行“conda”命令显示“‘conda’不是内部或外部命令,也不是可运行的程序”的解决方法

    找到安装目录 Anaconda3 xff0c 例如我的是 C Users zuoyu Anaconda3 xff1b 将 Anaconda3 Anaconda3 Scripts Anaconda3 Library bin 三个目录添加到系统
  • VS Code中使用Code Runner运行Python代码时中文乱码问题解决

    在配置文件 setting json 中加入如下代码即可 34 code runner executorMap 34 34 python 34 34 set PYTHONIOENCODING 61 utf8 amp amp python u
  • 【PAT】B1019 数字黑洞

    给定任一个各位数字不完全相同的 4 位正整数 xff0c 如果我们先把 4 个数字按非递增排序 xff0c 再按非递减排序 xff0c 然后用第 1 个数字减第 2 个数字 xff0c 将得到一个新的数字 一直重复这样做 xff0c 我们很
  • 【PAT】B1030 完美数列

    给定一个正整数数列 xff0c 和正整数 p xff0c 设这个数列中的最大值是 M xff0c 最小值是 m xff0c 如果 M mp xff0c 则称这个数列是完美数列 现在给定参数 p 和一些正整数 xff0c 请你从中选择尽可能多
  • 【PAT】B1025 反转链表

    给定一个常数 K 以及一个单链表 L xff0c 请编写程序将 L 中每 K 个结点反转 例如 xff1a 给定 L 为 1 2 3 4 5 6 xff0c K 为 3 xff0c 则输出应该为 3 2 1 6 5 4 xff1b 如果 K