【利用STL stack实现逆序输出的代码】
在算法竞赛中,利用STL stack实现逆序输出,特别好理解。
STL stack的官方帮助文档详见:https://cplusplus.com/reference/stack/stack/
下面,给出一个利用STL stack实现逆序输出的代码。如下所示:
#include <bits/stdc++.h>
using namespace std;
int n;
char x;
int main() {
cin>>n;
stack<char> s;
while(n--) {
cin>>x;
s.push(x);
}
while(!s.empty()) {
cout<<s.top();
s.pop();
}
return 0;
}
/*
in:
5
abcde
out:
edcba
*/
针对上面实例,在实践中,也常有利用数组模拟栈实现的需求。据此,根据栈的特点,引入整型变量top表示栈顶,引入了字符数组s[]表示栈(假定本例中数组中的元素个数最多不超过100个,也即用数组模拟的栈中的元素个数不超过100个)。根据top初始取0或-1的不同,下面分别给出了利用数组模拟栈的代码。
【top初始取-1时,用数组模拟栈实现逆序输出的代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
char s[maxn];
int main() {
char x;
int top=-1;
int n;
cin>>n;
while(n--) {
cin>>x;
s[++top]=x;
}
while(top!=-1) {
cout<<s[top];
top--;
}
return 0;
}
/*
in:
5
abcde
out:
edcba
*/
【top初始取0时,用数组模拟栈实现逆序输出的代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
char s[maxn];
int main() {
char x;
int top=0;
int n;
cin>>n;
while(n--) {
cin>>x;
s[++top]=x;
}
while(top!=0) {
cout<<s[top];
top--;
}
return 0;
}
/*
in:
5
abcde
out:
edcba
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/120588993