L2-022 重排链表给定一个单链表 \(L_{1}\)→ \(L_{2}\)→ ⋯ → \(L_{n−1}\)→ \(L_{n}\) ,请编写程序将链表重新排列为 \(L_{n}\)→ \(L_{1}\)→ \(L_{n−1}\)→ \(L_{2}\)→ ⋯ 例如:给定 \(L\)
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)。
先根据地址来将链表进行排序,进行链表重排时,用下标l从左往右递增,用下标r从右往左递减,当r出现在l左侧时说明链表重排完毕。 AC代码: 代码语言:javascript 复制 #include<bits/stdc++.h>using namespace std;#defineMAX100005struct LinkNode{int address;//当前结点的地址int data;//当前结点的数据int next;//...
27.L2-022 重排链表03-1828.L2-023 图着色问题03-1829.L2-024 部落03-1930.L2-025 分而治之03-1931.L2-026 小字辈(25分)03-1932.L2-027 名人堂与代金券03-1933.L2-028 秀恩爱分得快03-1934.L2-029 特立独行的幸福03-1935.L2-030 冰岛人03-2036.L2-032 彩虹瓶03-2037.L2-034 口罩发放03-2038...
https://www.patest.cn/contests/gplt/L2-022 思路 先用结构体 把每个结点信息保存下来 然后深搜一下 遍历一下整个链表 然后就重新排一下 但是要注意一个坑点 是 有效的结点数 不一定是n 这个原因 导致第三个测试点过不了 意思就是 它给出N 个结点 但是不一定这N个结点 都是在一张链表上的 ...
L2-022 重排链表 大致思路:因为题目可能会给不在链表中的节点,所以我们需要先把完整的链表提取出来。然后我们每一次把两头的输出,如果是奇数个,那么最后会剩一个,偶数会剩两个,分别判断即可。 View Code
坑:第一发卡了第二个样例,第二发卡了第4个,莫名其妙,所以把两个代码合起来,然后强行ac了。 #include <iostream>#include<cstdio>#include<algorithm>#include<queue>#include<vector>#include<cmath>#include<cstring>#include<string>#include#include<stack>#include<set>#include<string.h>#include<list>#defi...
题目链接: L2-022 重排链表 (25分) 思路: 将原结点编号顺序存下来,然后按规则重排就好; 注意给出的n和实际链表长度并不一样,因为存在无效结点,我们需要自己计算n; 代码: #include<bits/stdc++.h>usingnamespacestd;constintmaxn =1e6+5;intbg, n, dat[maxn], nex[maxn];voidout(vector<int> & v)...
重排链表 思路 把单链表化成双向链表,然后从左到右逐个插入,然后逆序输出 基本操作 link , insert 注意的点: 输出的前缀为0或-1,要特殊处理位数 插入遍历的时候 x每次要移动两个位置 代码 #include<bits/stdc++.h> using namespacestd; structnode{ ...
其中Address是结点地址;Data是该结点保存的数据,为不超过105的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。输出格式:对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。分析:输入的也许不是个链表,只需要将以给出的第1个结点的地址为开头的链表重排即可。