题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960
思路:满足栈的先进后出的性质。
在写代码之前,先回顾一下stl模板中栈和队列的常用方法,链接如下:https://blog.csdn.net/Dachao0707/article/details/82829147
代码如下:
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<string> a;
int n;
string s;
while(cin>>s)
{
a.push(s);//入栈
}
n=a.size();
for(int i=0;i<n;i++)
{
if(i!=n-1){
cout<<a.top()<<" ";
}
else
cout<<a.top();
a.pop();
}
其实使用while(cin>>s)会有死循环问题,一般都采用ctrl+z再回车解决。。。我以为这个提交之后pat会不给通过,但最后通过了我觉得很神奇。。。。。
如果想以回车为结束输入的话,可以在入栈的代码后添加:
if ((c = getchar()) == '\n')//判断输入是否完毕
break;
当然前面要记得声明一下c哦,不然会报错的。
下面贴一下大神的做法:(链接在此:https://www.liuchuo.net/archives/524)
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<string> v;
string s;
while(cin >> s) v.push(s);
cout << v.top();
v.pop();
while(!v.empty()) {
cout << " " << v.top();
v.pop();
}
return 0;
}
大神的代码还是一如既往的简洁,我们在处理输出的时候有些不同。
今天也要继续加油鸭!