1.概念:
栈简单的说就是“先进后出”的数据结构,就相当于几辆汽车进入了一个只允许一辆车通行的死胡同,先进去的车辆只能等最后进去的车辆出来后才能出来。
2.头文件:
#include<stack>
3.定义方式:
stack<数据类型>a;
4.关于栈的一些操作:
(1) a.top() ; 取出栈顶元素
(2) a.push(); 压入/输入新的元素
(3) a.pop() ; 删除栈顶元素
(4) a.empty() ; 判断栈是否为空
(5) a.size() ; 计算栈中的元素
5. 例题: 判断回文串:
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
string str;
stack<char>a;
cin>>str;
int mid=str.size()/2-1;
int i;
for(i=0;i<=mid;i++)
{
a.push(str.at(i)); //将字符串的前mid位压入栈
}
int next;
if(str.size()%2==0) next=mid+1; //若长度为偶数,则从第mid+1位开始判断
else next=mid+2; //否则从第mid+2位开始判断
for(i=next;i<str.size();i++)
{
if(str.at(i)==a.top()) //如果相等,则将栈顶元素删除
{
a.pop();
}
else break; //若不相等,则直接跳出循环,输出no
}
if(a.empty()) //当栈内元素为空时,证明时回文字符串,输出yes
{
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
return 0;
}