ybt1105 数组逆序
时空限制 1000ms/64MB
题目描述
将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。
输入
输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。
输出
输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。
样例输入
5
8 6 5 4 1
样例输出
1 4 5 6 8
代码
法一:数组
#include<iostream>
using namespace std;
int a[105];
int main(){
int n;
cin>>n;
for (int i=0; i<n; i++) cin>>a[i];
for (int i=n-1; i>0; i--) cout<<a[i]<<" ";
cout<<a[0]<<endl;
return 0;
}
法二:STL栈
#include<iostream>
#include<stack>
using namespace std;
stack<int> s;
int main(){
int n;
cin>>n;
for (int i=1,x; i<=n; i++){
cin>>x;
s.push(x); //入栈
}
while (!s.empty()){ //栈空?
if (--n) cout<<s.top()<<" ";
else cout<<s.top()<<endl;
s.pop(); //出栈
}
return 0;
}
法三:手动栈
#include<iostream>
using namespace std;
int n,stack[105],top=0;
int main(){
cin>>n;
for (int i=1,x; i<=n; i++){
cin>>x;
stack[++top] = x; //入栈
}
while (top){ //栈空?
if (top>1) cout<<stack[top]<<" ";
else cout<<stack[top]<<endl;
top--; //出栈
}
return 0;
}