1. 程式人生 > >STL之stack(棧)

STL之stack(棧)

棧的操作如下:
1.

stack<data_type>name;//如:stack<int>z;定義一個數據型別為data_type的棧name。

2.

stack<data_type>name(name2);//如:stack<int>z(z2);將棧name2中的元素複製到一個新棧name中。

3.

name.push(variable);//如:z.push(a);將a壓入棧z的頂端。

4.(棧不能為空的情況下)

name.pop();//如:z.pop();彈出一個z棧的棧頂元素。

5.(棧不能為空的情況下)

variable=name.top();//如:k=z.top();將z棧的棧頂元素賦值給一個變數k。

6.

variable=name.size();//如:k=z.size();將z棧的元素個數賦值給一個變數k。

7.

name.empty();//如:z.empty();檢驗棧是否為空,空返回為1,非空返回為0;

總體操控樣例如下:

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
typedef long long ll;
inline ll read()//輸入 
{
    char ls=getchar(),k=0;for(;ls<'0'||ls>'9'
;k=ls,ls=getchar()); ll x=0;for(;ls>='0'&&ls<='9';ls=getchar())x=x*10+ls-'0'; if(k=='-')x=-x;return x; } stack<ll>z;//stack<data_type>name;定義棧z 型別long long int main() { ll a[12]={1,2,3,4,5,6,7,8,9,10}; for(int i=0;i<=9;++i) z.push(a[i]);//將a陣列的元素依次壓入棧頂 cout
<<z.size()<<endl;//輸出棧中的元素個數共10個 cout<<z.top()<<endl;//返回棧頂元素10 z.pop(); cout<<z.top()<<endl;//10被彈出,返回棧頂元素9 cout<<z.empty()<<endl;//此時棧不為空,返回0 stack<ll>z2(z);//複製棧z到新棧z2 cout<<z2.size()<<endl;//輸出z2中的元素個數共9個 for(int i=0;i<=8;++i) { cout<<z2.top()<<" ";//檢驗複製結果,依次彈出棧中的元素 z2.pop(); }cout<<endl; cout<<z2.empty()<<endl;//此時棧為空,返回1 //cout<<z2.top()<<endl;棧空時執行這句話記憶體會崩潰,應用程式錯誤 //所以輸出棧時一定要保證棧不為空 return 0; }