反正就是要区分奇偶,才能知道那个结点最后要打印出-1. 我看网上遇到的都是测试点3的问题,不过我有问题的是测试点1,前三个出问题就是节点数奇偶的问题。#include <bits/stdc++.h> using namespace std; map<int, pair<int, int>> mp; int main() { ...
题目保证给出的链表上至少有两个结点。输出格式:对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。输入样例:00100 6 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 输出样例:68237 6 00100 00100 1 99999 99999 5 12309 12309 2 00000 ...
先根据地址来将链表进行排序,进行链表重排时,用下标l从左往右递增,用下标r从右往左递减,当r出现在l左侧时说明链表重排完毕。 AC代码: 代码语言:javascript 复制 #include<bits/stdc++.h>using namespace std;#defineMAX100005struct LinkNode{int address;//当前结点的地址int data;//当前结点的数据int next;//...
其中Address是结点地址;Data是该结点保存的数据,为不超过105的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。 输出描述: 对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。 输入样例: 00100 6 ...
PAT 天梯赛 L2-022. 重排链表 【数据结构】 题目链接 https://www.patest.cn/contests/gplt/L2-022 思路 先用结构体 把每个结点信息保存下来 然后深搜一下 遍历一下整个链表 然后就重新排一下 但是要注意一个坑点 是 有效的结点数 不一定是n 这个原因 导致第三个测试点过不了...
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→...。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。
L2-022. 重排链表 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→...。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。 输入格式: 每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (<= 105)...
题目链接: L2-022 重排链表 (25分) 思路: 将原结点编号顺序存下来,然后按规则重排就好; 注意给出的n和实际链表长度并不一样,因为存在无效结点,我们需要自己计算n; 代码: #include<bits/stdc++.h>usingnamespacestd;constintmaxn =1e6+5;intbg, n, dat[maxn], nex[maxn];voidout(vector<int> & v)...
L2-022 重排链表 大致思路:因为题目可能会给不在链表中的节点,所以我们需要先把完整的链表提取出来。然后我们每一次把两头的输出,如果是奇数个,那么最后会剩一个,偶数会剩两个,分别判断即可。 View Code
map<int,int>p; list<pair<int,int> >l,ll;intmain() {inthead, n; cin>> head >>n; _for(i,0, n) {intx; cin>>x; cin>> val[x] >>nxt[x]; }for(intp = head; p != -1; p =nxt[p]) { l.push_back(mp(p, val[p])); ...