文章目錄
前言:
棧(stack)是限定僅在表尾進行插入和刪除操作的線性表。 棧中允許插入和刪除的一端稱爲棧頂(top),另一端稱爲棧底(bottom)。 不含任何數據元素的棧稱爲空棧。 棧中元素的個數稱爲棧的高度或長度。將元素插入到棧中的操作稱爲入棧(或進棧)操作,元素入棧後就變成新的棧頂。 將元素從棧中刪除的操作稱爲出棧(或退棧)操作,出棧時被刪除的總是原來的棧頂元素 。
棧的基本運算主要有以下幾種:
- 入棧 Push(x),將元素x 插入到棧頂;
- 出棧 Pop(),刪除棧頂元素;
- 取棧頂元素 Top(),返回棧頂元素,棧頂元素並不出棧;
- 判棧空 Empty(),判別棧是否爲空。
創建Stack對象:
頭文件:#include
template <class T, class Container = deque > class stack;
std::stack<int> mystack; //創建空的棧
std::stack <int> mystack1(mystack)//拷貝構造
Stack成員函數:
size( ) :返回棧中元素個數
//size_type size()
mystack.size()
top( ) :返回棧頂的元素
//value_type &top() 返回棧頂元素的引用
mystack.pop()
pop( ) :從棧中取出並刪除元素
//void pop();
while(!mystack.empty())
{
mystack.pop(); //全部出棧
}
push(e) :向棧中添加元素e
mystack.push(10);
empty( ) :棧爲空時返回true
while (!mystack.empty())
{
sum += mystack.top();
mystack.pop();
}
棧的應用:
- 數制轉換
- 括號匹配的檢驗
- 行編輯程序
- 迷宮求解
- 表達式求值
- 棧與遞歸的實現
- 二叉樹
https://wenku.baidu.com/view/80a6b1777275a417866fb84ae45c3b3567ecddbb.html