题目是入门级,简单来说需要实现的功能可由下面两行概况
输入 3 65 23 5 34 1 30 0
输出 30 1 34 5 23 65 3
注意最后输出的数字后面是没有空格的。
代码参考如下
#include<stdio.h>
#include<stack>
using namespace std;
int main()
{
int i=0;
unsigned long int a;
stack<int> st;
scanf("%d",&a);
while(a)
{
st.push(a);
i++;
scanf("%d",&a);
}
for(;i>0;i--)
{
printf("%d ",st.top());
st.pop();
}
printf("%d",st.top());
return 0;
}
这里读取数据这一块,最开始我用了一个不那么聪明的方法;后来则改为l如下方法。
while(1)
{
scanf("%d",&a);
if(a==0)
break;
st.push(a);
i++;
}
这里其实直接用基础的c通过for循环读取输出也可以简单地写出来。但是利用STL中的栈则更为直观简洁。
在读取数据中之所以设计了变量i,是为了最后输出能够方便地在数字间穿插空格。但是在看题解的时候,有大佬直接用stcak
网友评论