赞
踩
又是模板链表题~
给定一个单链表 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。