L2-022 重排链表

一、题目

二、解题思路

  1. 结构体数组的下标表示该节点的地址,value 表示该节点的值,nextkey 表示下一个结点的地址。
  2. 输入的节点不一定都属于这个链表:将此链表中的节点按顺序存储在数组中,并记录合法节点的个数 k ,数组中存放的是各节点的地址。
  3. 按照题目指定的顺序输出,注意考虑合法节点个数的奇偶性以及最后一个节点的下一个结点的地址为 -1 。

三、代码

cpp 复制代码
#include<iostream>
using namespace std;

struct List
{
	int value,nextkey;
}a[100005];

int main()
{
	int index,n,result[100005];
	cin>>index>>n;
	for(int i=0;i<n;i++)
	{
		int key;
		cin>>key;
		cin>>a[key].value>>a[key].nextkey;
	}
	int k=0;
	while(index!=-1)
	{
		result[k++]=index;
		index=a[index].nextkey;
	}
	int i=0,j=k-1,cot=0;
	for(;cot<(k+1)/2-1;i++,j--,cot++)
	{
		printf("%05d %d %05d\n",result[j],a[result[j]].value,result[i]);
		printf("%05d %d %05d\n",result[i],a[result[i]].value,result[j-1]);
	}
	if(k%2==0)
	{
		printf("%05d %d %05d\n",result[j],a[result[j]].value,result[i]);
	}
	printf("%05d %d -1\n",result[i],a[result[i]].value);
	return 0;
}

四、总结

输入的节点不一定都属于这个链表(测试点 3 )。

相关推荐
YIN_尹8 小时前
【Linux系统编程】进程地址空间
linux·c++
qq_5024289908 小时前
清华大学与微软亚洲研究院出品:Kronos 本地部署教程
数据结构·python·金融量化·kronos开源模型
EverestVIP8 小时前
C++中空类通常大小为1的原理
c++
white-persist9 小时前
【vulhub shiro 漏洞复现】vulhub shiro CVE-2016-4437 Shiro反序列化漏洞复现详细分析解释
运维·服务器·网络·python·算法·安全·web安全
网域小星球9 小时前
C++ 从 0 入门(六)|C++ 面试必知:运算符重载、异常处理、动态内存进阶(终极补充)
开发语言·c++·面试
晚会者荣9 小时前
红黑树的插入(有图)
c++
FL16238631299 小时前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#
John.Lewis10 小时前
C++进阶(12)附加学习:STL之空间配置器(了解)
开发语言·c++·笔记
汉克老师10 小时前
GESP2023年12月认证C++三级( 第三部分编程题(2、单位转换))
c++·string·单位转换·gesp三级·gesp3级
baizhigangqw10 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶
算法·启发式算法·web app