首页 > 其他分享 >L2-022 重排链表

L2-022 重排链表

时间:2024-03-18 19:34:14浏览次数:25  
标签:mp int s1 链表 05d L2 vec 022 size

这道题真的烦,输出想半天。
反正就是要区分奇偶,才能知道那个结点最后要打印出-1.
我看网上遇到的都是测试点3的问题,不过我有问题的是测试点1,前三个出问题就是节点数奇偶的问题。

#include <bits/stdc++.h>
using namespace std; 
map<int, pair<int, int>> mp;
int main() {
	int s, n;
	cin >> s >> n;//起始和节点数量
	for (int i = 0; i < n; i++) {
		int a, b, c;
		cin >> a >> b >> c;
		mp[a] = { b,c };//b是值 c是下一个地址的值
	}
	vector<int> vec;//vec放的是从前往后依次的地址
	while (s != -1) {
		vec.push_back(s);
		s = mp[s].second;
	}
	if (vec.size() == 1) {
		printf("%05d %d -1\n", vec[0], mp[vec[0]].first);
		return 0;
	}
	int i = 0, j = vec.size() - 1;
	if (vec.size() % 2 == 0) {//如果是偶数
		for (int i = 0; i < vec.size()/ 2; i++) {
			int s1 = vec[i];
			int s2 = vec[vec.size() - 1 - i];
			printf("%05d %d %05d\n", s2, mp[s2].first, s1);
			if (i != vec.size()/ 2 - 1) {
				printf("%05d %d %05d\n", s1, mp[s1].first, vec[vec.size() - 1 - i-1]);
			}
			else {
				printf("%05d %d -1\n", s1, mp[s1].first);
			}
		}
	}
	else {
		for (int i = 0; i < vec.size()/2; i++) {
			int s1 = vec[i];
			int s2 = vec[vec.size() - 1 - i];
			printf("%05d %d %05d\n", s2, mp[s2].first, s1);
			printf("%05d %d %05d\n", s1, mp[s1].first, vec[vec.size() - 1 - i-1]);
		}
		int s2 = vec[vec.size() / 2];
		printf("%05d %d -1\n", s2, mp[s2].first);
	}
	return 0;
}

标签:mp,int,s1,链表,05d,L2,vec,022,size
From: https://www.cnblogs.com/chengyiyuki/p/18081229

相关文章

  • C语言动态链表练习(简单易懂)
    学习目标:初步认识动态链表,并会最基础的应用。题目内容:写个程序,输入a,b,c如果a>b,a=a➖b    b>c,b=b➖c    c>a,c=c➖a要求:开始时输入k➕1行数,第一行为k,代表数的组数,下面每一行为一个组,每组四个数,前三个为a,b,c,最后一个为这组数进行上述计算的次数题目特点分析:开始......
  • WSL2 配置 tensorflow 环境
    Windows系统中更新NVIDA驱动这里可以直接通过GeforceExperience直接更新更新完成后可以在命令行/wsl中输入nvidia-smi可以看到输出这里的CUDAVersion指的是该驱动版本最高可支持的CUDA版本安装CUDA到NVIDIA官网下载符合条件的CUDA这里我一开始直接选择安装了最新版......
  • 反转链表
    描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围:0≤n≤1000要求:空间复杂度O(1),时间复杂度O(n),如当输入链表{1,2,3}时,经反转,原链表变为{3,2,1},所以对应输出为{3,2,1}.以上转换过程如下图所示:实......
  • [Java·算法·中等] LeetCode21. 合并两个有序链表
    人不走空                                          ......
  • vs2022新建项目却显示0个项目
    最近重新安装了vs2022,新建一个web程序之后却显示 使用cmd输入命令dotnet--info结果显示 没有SDK 安装了.net6SDK之后,依然是这样,没办法,只能查询环境变量了找到高级环境变量的系统变量,找到path,正常的效果如下,ProgramFiles在上面 因为在这个文件夹下面才有sdk......
  • 构建链表
    链表 typedefstructmsgdata{charmsgtype;chartext[27];}link_data;typedefstructmsglist{link_datadata;structmsglist*next;}linknode,*linklist;   创建链表思路:首先创建两个结点,即头结点和尾结点;然后创建一个函数:在函数内创建一......
  • 双向链表
    rt_inlinevoidrt_list_init(rt_list_t*l){l->next=l->prev=l;}/***@briefinsertanodeafteralist**@paramllisttoinsertit*@paramnnewnodetobeinserted*/rt_inlinevoidrt_list_insert_after(rt_list_t*l,rt_list_t*n){......
  • 【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现
    目录前言环境准备简单分析EXP前言本地jar包运行打通了,远程500,感觉靶机环境有问题,不纠结(主要记录下做题过程,纯菜狗,小白文环境准备这次附件给的jar包是可执行jar,不是可依赖jar,不能直接addaslib导入项目需要进行如下的处理先是对jar包进行解压用jadx-gui打开......
  • 链表 Linked List
    2024.3.15芝士wa参考视频:bilibli-数据结构-链表“印度小哥讲得真好”链表对于链表来说,存储数据需要两个部分,一是数据本身,二是指针,该指针指向下一个数据的地址,依次链接,直到最后一个元素,指针指向空(NULL)遍历的时间复杂度为O(n)插入的时间复杂度为O(n)删除的时间复......
  • 5.合并两个有序链表
    链表合并B站左程云讲解连接链表结构publicstaticclassListNode{publicintval;publicListNodenext;publicListNode(intval){this.val=val;}publicListNode(intval,ListNodenext){......