l2-22(重排链表)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805057860517888
题意:给定链表L1->L2->...->Ln,要求按Ln->L1->Ln-1->L2->...的格式输出。
思路:水模拟,按照要求做就行了,定义结构体数组模拟内存,每个结点的下标即其地址,结点包括data,nxt(指向下一个元素),lst(指向上一个元素),输入数据之后,循环一遍求出每个结点在链表中的上一个结点的地址,存在lst中,然后用frt,bk分别指向当前链表的头部和尾部,输出即可。但是这样我wa了一个点,检查好久也没检查除有什么错误,上网看了才发现题目有个坑点:输入的结点不一定在链表上。我...对这种坑真的很无奈,个人觉得这样的坑意义不大,程序设计比赛的侧重应该放在算法上,放在思想上,而不是玩这种文字游戏。吐槽完还得继续刷题,吐吐就行了,也不用一直上纲上线,改变不了它就改变自己吧。
AC代码:
#include<bits/stdc++.h>
using namespace std; struct node{
int dat,nxt,lst;
}a[]; int n,frt,bk,t1,t2,t3; int main(){
scanf("%d%d",&frt,&n);
for(int i=;i<n;++i){
scanf("%d%d%d",&t1,&t2,&t3);
a[t1].dat=t2,a[t1].nxt=t3;
if(t3==-) bk=t1;
}
a[frt].lst=-;
int f=frt;
while(f!=-){
a[a[f].nxt].lst=f;
f=a[f].nxt;
}
while(frt!=bk){
printf("%05d %d %05d\n",bk,a[bk].dat,frt);
bk=a[bk].lst;
if(frt==bk) break;
printf("%05d %d %05d\n",frt,a[frt].dat,bk);
frt=a[frt].nxt;
}
printf("%05d %d -1\n",frt,a[frt].dat);
frt=a[frt].nxt;
return ;
}
l2-22(重排链表)的更多相关文章
- L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
- pat甲级 团体天梯赛 L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
- GPLT天梯赛 L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
- Leetcode 143.重排链表
重排链表 给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示 ...
- Java实现 LeetCode 143 重排链表
143. 重排链表 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节 ...
- 【Warrior刷题笔记】143.重排链表 【线性化 || 双指针+翻转链表+链表合并】详细注释
题目一 力扣143.重排链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reorder-list/ 1.描述 给定一个单链表L的头节点he ...
- L2-022 重排链表 (25 分)
L2-022 重排链表 (25 分) 给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯.例 ...
- LeetCode 重排链表 OPPO笔试
重排链表 几个关键点: 1. 双指针(快慢指针找中点)(用于反转后一部分) 2. 反转后一部分 (reverse函数) 3. 合并链表 合并的时候在笔试的时候想了一种比我之前想的简单的方法 从slow ...
- 天梯赛 L2-022. (数组模拟链表) 重排链表
题目链接 题目描述 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→....例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2 ...
- 143 Reorder List 重排链表
给定一个单链表L:L0→L1→…→Ln-1→Ln,重新排列后为: L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点的值的情况下进行原地操作.例如,给定链表 {1,2,3,4},按要求重排 ...
随机推荐
- MySQL配置文件以及服务的开启关闭重启
linux系统中,配置文件路径一般为/etc/my.cnf [root@host ~]# mysql --help|grep my.cnf order of ...
- a标签自执行点击事件
//html <a href='http://www.baidu.com' ><button id='sss'>百度</button></a> //原生 ...
- 01.VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...
- PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, ...
- js 只允许输入数字
<input id="credit" type="text" class="nummber" onkeyup="value= ...
- day05-表的三种关系
表的三种关系 1)一对一 关联方式:foreign key+unique例如1个学生只能有1个学号,1个学号只能对应1个学生 #两张表: 学生表(student)和 学号表(student_id) # ...
- Xshell 公钥登入服务器
1:生成公钥 此时有test.pub文件 2:linux CentOS 7 配置 2.1 test.pub 存入/root/test.pub目录下面 2.2 确保authorized_keys文件内容 ...
- ABAP-邮件发送
*&---------------------------------------------------------------------* *& Report ZRICO_TES ...
- js 编写一个神奇的四则运算
写一个算法,有时候可以用简单的方法就可以写出来,但是只能针对特定的环境,如果要能够适应不同的环境,就需要对算法进行优化,在优化的过程中,你会觉得非常神奇,下面来看一个简单的四则运算的算法编写方式: 1 ...
- 建立一个php 基础类
在些PHP文件的时候,一般首先都是要先写一下基础类: 主要包括以下几个方面: 1.服务器的链接:包括主机,用户名,密码 2.数据库的选择:要操作哪个数据库 3.字符集的设置:设置什么样的编码 4.查询 ...