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 )。

相关推荐
见合八方3 分钟前
【滤波器】热调谐FP滤波器
人工智能·算法
古城小栈3 分钟前
cargo-pprof:Rust性能调优
人工智能·算法·rust
x_xbx14 分钟前
LeetCode:543. 二叉树的直径
算法·leetcode·职场和发展
汉克老师14 分钟前
GESP6级C++考试语法知识(三十九、动态规划的启蒙(四、二维DP))
c++·动态规划·dp·gesp六级·二维dp
QiLinkOS15 分钟前
QiLink 技术委员会选举实施细则
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
不会C语言的男孩18 分钟前
C++ Primer Plus 第13章:类继承
开发语言·c++
我材不敲代码18 分钟前
Python基础: 函数超全详解:定义、参数、返回值、作用域与递归
开发语言·python·算法
承渊政道19 分钟前
Linux系统学习【进程控制:进程创建、终止与等待、进程程序替换、自主shell命令行解释器详解】
linux·服务器·c++·学习·ubuntu·bash·远程工作
无忧.芙桃21 分钟前
数据结构之顺序表的实现
数据结构
雪度娃娃22 分钟前
转向现代C++——优先选用删除函数而非private未定义函数
java·jvm·c++