2018年网易笔试题1:输入一个数列a,a有n个元素,对数列b进行操作:1)将a的第一元素放在b的末尾,2)翻转b。将操作1)2)进行n次,求b
例如
输入 1 2 3 4
输出 4 2 1 3
思路:利用双向链表list避免了reverse
#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <stack>
#include <vector>
#include <algorithm>
#include <list>
using namespace std;
int main(){
int n;
vector<int> a;
list<int> b;
int x;
scanf("%d",&n);
int i = 0;
for(; i < n; i++){
scanf("%d",&x);
if(i % 2)
b.push_back(x);
else
b.push_front(x);
}
if(i % 2 == 1){
list<int>::iterator it = b.begin();
while(it != b.end()){
cout << *it << ' ';
it++;
}
}
else{
list<int>::reverse_iterator rit = b.rbegin();
while(rit != b.rend()){
cout << *rit << ' ';
rit++;
}
}
return 0;
}