栈中的数据元素遵守先进后出的原则,栈顶的第一个元素是栈顶元素,只能在栈顶进行插入和删除操作。
出栈入栈顺序相同。
栈
库
stack<int> ......//......为名称
栈的相关概念
- 栈顶可以插入后删除元素,栈顶可以插入元素。
- 压栈:栈的插入操作,也叫作进栈。
- 弹栈:删除栈的操作叫做弹栈。
栈的操作
- 入栈:
push();
- 出栈:
pop();
- 落空栈:
clear();
- 取栈顶元素:
top();
- 栈的大小:
size();
- 清空栈:
empty();
列题
https://www.luogu.org/problem/P2731
#include<bits/stdc++.h>
using namespace std;
int n;
int g[1010][1010];
int a[100000],b[100000];
int ans;
int s=1000000,q=1000000;
void add(int x){
for(int i=1;i<=500;i++){
if(g[x][i]){
g[x][i]--;
g[i][x]--;
add(i);
}
}
b[ans--]=x;
}
int main(){
cin>>n;
ans=n+1;
for(int i=1;i<=n;i++){
int u,v;
cin>>u>>v;
g[u][v]++;
g[v][u]++;
a[u]++;
a[v]++;
s=min(s,min(u,v));
}
for(int i=1;i<=500;i++){
if(a[i]%2==1){
q=min(i,q);
}
if(q<1000000){
add(q);
}else{
add(s);
}
}
for(int i=1;i<=n+1;i++){
cout<<b[i]<<endl;
}
return 0;
}