又是模板链表题~
给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯。
vector版:(柳婼) r+1和 l-1是变回push时的坐标,当r+1大l-1 1的时候停止。
int l = 0, r = v.size() - 1;
while(1) {
ans.push_back(v[r]);
r--;
if((r + 1) - (l - 1) == 1) break;
ans.push_back(v[l]);
l++;
if((r + 1) - (l - 1) == 1) break;
}
排序版:
#include<bits/stdc++.h>
using namespace std;
struct node{
int address,data,next;
int order;
int level;
}lis[100100];
bool cmp(node a,node b){
if(a.level!=b.level) return a.level>b.level;
else return a.order>b.order;
}
vector<node> ans;
int main(){
int begin,n;
cin>>begin>>n;
for(int i=0;i<n;i++){
int x,y,z;
cin>>x>>y>>z;
lis[x].ad