2018年网易笔试题1:输入一个数列a,a有n个元素,对数列b进行操作:1)将a的第一元素放在b的末尾,2)翻转b。将操作1)2)进行n次,求b

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 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int main(){
    int n;
    vector a;
	list 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::iterator it = b.begin();
		while(it != b.end()){
		   cout << *it  << ' ';
		   it++;
		}
	}
	else{
		list::reverse_iterator rit = b.rbegin();

		while(rit != b.rend()){
		   cout << *rit << ' ';
		   rit++;
		}
	}
		

    return 0;
}






你可能感兴趣的:(数据结构)