STL——stack

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章