C73-栈
2025-09-06 12:19:21
发布于:江苏
4阅读
0回复
0点赞
一、 模拟栈
#include <bits/stdc++.h>
using namespace std;
int stk[1005], t;
//1.入栈的操作
void push(int x){
++t;
stk[t] = x;
}
//2.出栈
void pop(){
--t;
}
//3.访问栈顶的元素
int top(){
return stk[t];
}
//4. 判空
bool empty(){
return 0 == t;
}
int main(){
int n = 5;
for (int i=1; i<=n; i++) {
push(i);
}
while (!empty()){
cout << top() << endl;
pop(); //输出一个数字之后弹出一个数组
}
return 0;
}
二、 模拟火车进栈
#include <bits/stdc++.h>
using namespace std;
int stk[1005], t;
int a[1005], n;
bool b[1005];
//1.入栈的操作
void push(int x)
{
++t;
stk[t] = x;
}
//2.出栈
void pop()
{
--t;
}
//3.访问栈顶的元素
int top()
{
return stk[t];
}
//4. 判空
bool empty()
{
return 0 == t;
}
int main()
{
cin >> n;
for (int i=1; i<=n; i++) cin>>a[i]; //给定的顺序
for (int k=1; k<=n; k++) {
for (int i=1; i<=a[k]; i++) {
if (b[i] == 0) {
push(i);
b[i] = 1;
}
}
if (top() == a[k]) {
pop();
} else {
cout <<"NO";
return 0;
}
}
cout << "YES";
return 0;
}
/*
5
3 5 4 2 1
YES
5
3 5 1 4 2
NO
*/
这里空空如也
有帮助,赞一个