pat1074 k个一组反转链表

news2024/12/25 14:48:41

是我的错觉吗

直接把%d赋值给数组小标,不能把值副进去? 

可是这样可以?

乱套了这 

同样的代码 

 

所以暂时将你眼睛闭了起来

所以还是好好老实两次赋值

。。。

写糊了已经

注意这句话

 链表中部翻转:

不带dummy真的好麻烦且头大,我想投降了

在链表中段翻转时,除了中间的四部曲,还需要

1.原中段的dummy指向原中段末尾节点

2.原中段的第一节点指向原中段末尾节点的下一位

此外还要注意输出什么?是dummy的next,没错,每次都是dummy的next,因为dummy的next就是2中的原中段的第一节点,要的就是他,也只有这样表述

ac代码

//重开
#include<stdio.h>
#include<bits/stdc++.h>
#include <string>
const int N=100005;
int n,first,firstid;
using namespace std;
int head,k;
int lnxt[N];
int val[N];

int p0=N-1;//dummy
int rvs(int k,int p)
{
	int pre=p;int cur=lnxt[p];
	int cur0=cur;//灵神 
	for(int i=0;i<k;i++)
	{int nxt=lnxt[cur];
	lnxt[cur]=pre;
	pre=cur;
	cur=nxt;
	}
	lnxt[lnxt[p]]=cur;
	lnxt[p]=pre;
	return cur0;//灵神 
	
}


int main()
{//输入数据 
	    scanf("%d %d %d",&head,&n,&k);
  lnxt[p0]=head;
  	for(int i=0;i<n;i++)
	{
	int idtemp;
	int valt,lnxtt;
	scanf("%d %d %d",&idtemp,&valt,&lnxtt);
	val[idtemp]=valt;lnxt[idtemp]=lnxtt;
}
//计算循环次数
int num_node=0;//一开始写的1,不对
for(int i=head;i>=0;i=lnxt[i]) num_node++;
int num_iter=num_node/k;
int dm=p0;
for(int i=0;i<num_iter;i++)
{
dm=rvs(k,dm);
}
int hd=lnxt[p0];
//rvs(k,p0);
//printf("%d %d %d",num_node,k,num_iter);
//int hd=p0;
while(hd!=-1)
{//printf("%d ",hd);hd=lnxt[hd];
if(lnxt[hd]==-1)printf("%05d %d %d\n",hd,val[hd],lnxt[hd]);
else	printf("%05d %d %05d\n",hd,val[hd],lnxt[hd]);hd=lnxt[hd];
}



 
 } 
 

acw上一位大佬 的:

#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_N = 100010;
int ne[MAX_N];
int node[MAX_N];
int Reverse(int head, int k) {
    int rear = ne[head]; //反转后的最后一个结点
    int pL = ne[head]; //从头结点的下个结点开始翻转
    int pR = ne[pL];
    for (int i = 0; i < k - 1; i++) { //k个节点翻转k-1次
        int t = ne[pR];
        ne[pR] = pL;
        pL = pR;
        pR = t;
    }
    //将反转后的链表与未反转链表连起来
    ne[head] = pL;
    ne[rear] = pR;
    return rear; //返回翻转链表的最后一个节点
}
int main() {
    int head, p;
    int h, n, k;
    cin >> h >> n >> k;
    //创建空的头指针
    head = MAX_N - 1;
    ne[head] = h;
    for (int i = 0; i < n; i++) {
        int addr, data, nextAddr;
        cin >> addr >> data >> nextAddr;
        node[addr] = data;
        ne[addr] = nextAddr;
    }
    //统计有效链表的长度
    p = head;
    int cnt = 0;
    while (p != -1) {
        p = ne[p];
        cnt++;
    }
    n = cnt;
    //翻转链表
    p = head;
    for (int i = 0; i + k < n; i += k) p = Reverse(p, k);
    //打印链表
    p = ne[head];
    while (p != -1) {
        printf("%05d %d ", p, node[p]);
        if (ne[p] != -1) printf("%05d\n", ne[p]);
        else puts("-1");
        p = ne[p];
    }
    return 0;
}

 

总结:

1 真的需要dummy

2 需要对“翻转中间一部分链表”有透彻的理解并且加以引用(参考灵神) 

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

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

相关文章

苹果手机照片格式heic怎么改jpg?教你3招快速转换

苹果手机照片格式heic怎么改jpg&#xff1f;将苹果手机照片格式从HEIC转为JPG&#xff0c;在日常使用中带来了极大便利。HEIC格式虽高效节省空间&#xff0c;但兼容性不如JPG广泛。转为JPG后&#xff0c;照片能轻松在多数设备、软件和在线平台上分享、打印或编辑&#xff0c;无…

SmartGit-Git版本控制系统的图形化客户端

SmartGit&#xff1a; SmartGit是一款免费的、专业的Git版本控制系统的图形化客户端。它适用于Windows、Mac和Linux等多种操作系统&#xff0c;提供了直观的用户界面和丰富的功能。支持创建、克隆、推送、拉取、合并和管理Git仓库&#xff0c;以及强大的分支管理功能。还提供了…

武汉流星汇聚:亚马逊中国卖家精准布局,万圣节装饰热销引领潮流

随着秋风渐起&#xff0c;万圣节的脚步虽还远在三个月之后&#xff0c;但消费者对于节日氛围的营造与期待已悄然升温。在亚马逊这一全球电商巨头的平台上&#xff0c;万圣节相关产品的搜索热潮正以前所未有的速度席卷而来&#xff0c;为中国卖家提供了又一个展示实力、捕捉商机…

大模型概念入门:探索这一AI技术的奥秘

一、引言 ChatGPT、Open AI、大模型、提示词工程、Token、幻觉等人工智能的黑话&#xff0c;在2023年这个普通却又神奇的年份里&#xff0c;反复的冲刷着大家的认知。让一部分人彻底躺平的同时&#xff0c;让另外一部分人开始焦虑起来&#xff0c;生怕在这个人工智能的奇迹之年…

无人机搭载的高压喷水清洗技术详解

随着城市化进程的加速&#xff0c;高空建筑、桥梁、电力设施等清洁维护问题日益凸显。传统的人工清洗方式不仅效率低下、成本高昂&#xff0c;还存在高空作业安全风险。无人机搭载的高压喷水清洗技术应运而生&#xff0c;以其独特的优势成为解决这一难题的新方案。该技术通过无…

不看表了

前段时间重温了一遍刘德华在1992年拍的《赌城大亨-新哥传奇》&#xff0c;里面叶倩文唱的《不了情》&#xff0c;顾媚唱的太凄&#xff0c;小凤姐唱的太醇&#xff0c;而莎莉叶倩文唱的太有大时代风云际会儿女情长味道。 刘德华华仔和邱淑贞豆豆&#xff0c;合作拍摄的两部大佬…

网络空间安全中的数字孪生技术研究

源自&#xff1a;系统仿真学报 作者&#xff1a;任乾坤,熊鑫立,刘京菊&#xff0c;姚倩 注&#xff1a;若出现显示不完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 人工智能、大数据、多模态大模型、计算机视觉、自然语言处理、数字孪生、深度强化学习…

软件工程造价师习题练习 19

1.在 A 系统中&#xff0c;用户可以对白名单进行新增、删除与查询的操作。在查询的过程中&#xff0c;用户在搜索框内录入关键字&#xff0c;这个“录入”可以识别为非基本过程。 正确 错误 在A系统中&#xff0c;用户对白名单进行新增、删除与查询的操作构成了系统的主要功能…

Scheme3.0标准之重要特性及用法实例(三十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

【Python进阶(八)】——数据框

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

JetBrains 开发工具——学生授权免费申请指南

2022 JetBrains 开发工具——学生授权免费申请指南 | JetBrains 博客https://blog.jetbrains.com/zh-hans/blog/2022/08/24/2022-jetbrains-student-program/ 第一次下载datagrip试用期一个月&#xff0c;在读学生申请试用期1年&#xff0c;可续期。 参考第一个文档申请学生认…

黑神话悟空配置要求是什么?

黑神话悟空最低配置要求是&#xff1a;操作系统Windows1064位、处理器Inteli5-8400或AMDRyzen51600、内存8GBRAM、图形NVIDIAGeForceGTX1060或AMDRadeonRX580、存储空间需要最少50GB可用空间。推荐配置&#xff1a;操作系统Windows1064位、处理器IntelCorei7-9700或AMDRyzen555…

内网渗透的风行者—Yasso

Yasso &#xff1a; Yasso&#xff0c;让内网渗透变得简单而高效。- 精选真开源&#xff0c;释放新价值。 概览 Yasso是由sairson精心打造的内网渗透辅助工具集&#xff0c;它为网络安全专家和渗透测试人员提供了一个功能强大的工作平台。在面对错综复杂的网络环境时&#xff…

uniapp实现区域滚动、下拉刷新、上滑滚动加载更多

背景&#xff1a; 在uniapp框架中&#xff0c;有两种实现办法。第1种&#xff0c;是首先在page.json中配置页面&#xff0c;然后使用页面的生命周期函数&#xff1b;第2种&#xff0c;使用<scroll-view>组件&#xff0c;然后配置组件的相关参数&#xff0c;包括但不限于&…

【SpringBoot】电脑商城-07-上传头像

基于SpringMVC的文件上传 1 MultipartFile接口 MultipartFile接口常用的的API见下表&#xff1a; 方法功能描述String getOriginalFilename()获取上传文件的原始文件名&#xff0c;即该文件在客户端中的文件名boolean isEmpty()判断上传的文件是否为空&#xff0c;当没有选择…

flowable源码解读——并行多实例节点任务是否是顺序生成

最近在项目开发中需要在多实例开始监听里修改一个全局的计数变量&#xff0c;不太确定并行多实例任务在底层引擎是顺序生成还是并行生成的&#xff0c;如果是顺序生成的则不影响&#xff0c;如果是并行生成 则修改一个全局的计数变量就会出现数据错误问题&#xff0c;查阅了flo…

JVM的原理和性能调优

java是如何做到跨平台&#xff1f; 将java文件通过javac编辑到JVM中&#xff0c;由JVM根据操作系统&#xff08;Windows&#xff0c;Linux&#xff09;的需要&#xff0c;生成出相对应的二进制文件&#xff0c;从而达到跨平台的特性。 JVM的组成 将java文件通过javac编译成clas…

逻辑回归C参数选择,利用交叉验证实现

目录 前言 一、C参数 二、交叉验证 1.交叉验证是什么 2.交叉验证的基本原理 3.交叉验证的作用 4.常见的交叉验证方法 三、k折交叉验证 四、C参数和k折交叉验证的关系 五、代码实现 1.导入库 2.k折交叉验证选择C参数 3.建立最优模型 总结 前言 逻辑回归&#xff0…

TCP vs UDP:揭秘可靠性与效率之争

概述 今天我们开始主要讲解TCP的相关知识点。在之前讲解分层章节的时候&#xff0c;我们提到过一个重要观点。在网络层及以下几层&#xff0c;更多的是让主机与主机建立连接&#xff0c;也就是说你的电脑需要知道另一台电脑在哪里才能连接上它。然而&#xff0c;在网络中的通信…

世界各国-经济距离数据汇总(2005-2022年)

世界各国-经济距离数据汇总&#xff08;2005-2022年&#xff09; 经济距离是衡量国家之间经济制度差异的一个重要概念&#xff0c;它不仅包括地理距离&#xff0c;还涵盖了费用、时间、劳动力等因素&#xff0c;并且受到消费者行为的影响。随着全球化的深入发展&#xff0c;国家…