C++中Stack(棧)的使用方法與基本操作詳解
一、stack概述
Stack(棧)是一種線性數(shù)據(jù)結(jié)構(gòu),它具有"先進(jìn)后出“(Last In First Out,簡(jiǎn)稱LIFO)的特點(diǎn),即新元素進(jìn)棧后只能位于棧頂,元素出棧時(shí)也只能從棧頂開始。
在C++中,stack通常是通過STL(Standard Template Library)庫中的stack模板實(shí)現(xiàn)的。STL stack是基于deque(雙端隊(duì)列)實(shí)現(xiàn)的,通過deque模板我們可以實(shí)現(xiàn)stack的一些操作。
二、stack的基本操作
1、頭文件
在使用STL中stack模板之前,我們需要包括頭文件#include<stack>
。
#include <iostream> #include <stack> using namespace std;
2、stack創(chuàng)建方式
在C++中,我們使用類模板stack 來實(shí)現(xiàn)stack。其中T是存儲(chǔ)元素的類型。stack通過調(diào)用默認(rèn)構(gòu)造函數(shù)生成一個(gè)空stack
stack<int>a; // 創(chuàng)建一個(gè)空stack
3、棧頂和棧底操作
在stack中,我們可以分別通過stack::top()和stack::back()來訪問棧頂和棧底元素
stack<int>a; a.push(1); a.push(2); cout << a.top() << endl; // 輸出2 cout << a.back() << endl; // 輸出1
4、元素添加和刪除
在stack中,我們通過push()函數(shù)向棧頂添加一個(gè)元素。同時(shí),我們也可以使用pop()函數(shù)來從棧頂刪除一個(gè)元素
stack<int>a; a.push(1); // 數(shù)組變成[1] a.push(2); // 數(shù)組變成[1,2] cout << a.top() << endl; // 輸出2 a.pop(); // 彈出2 cout << a.top() << endl; // 輸出1
5、棧的大小操作
我們可以通過stack::size()函數(shù)獲取當(dāng)前棧中的元素?cái)?shù)量
stack<int>a; a.push(1); // 數(shù)組變成[1] a.push(2); // 數(shù)組變成[1,2] a.push(3); // 數(shù)組變成[1,2,3] cout << a.size() << endl; // 輸出3
6、判斷棧是否為空
通過stack::empty()函數(shù)可以判斷當(dāng)前的棧是否為空。如果棧為空則返回值為true,否則為false
stack<int>a; cout << a.empty() << endl; // 輸出1,表示為空 a.push(1); // 數(shù)組變成[1] a.push(2); // 數(shù)組變成[1,2] cout << a.empty() << endl; // 輸出0,表示不為空
三、stack的實(shí)際應(yīng)用
stack在數(shù)學(xué)中經(jīng)常被用來解決數(shù)學(xué)表達(dá)式中的括號(hào)匹配問題。在這個(gè)問題中,我們需要使用stack來匹配左右括號(hào),以確保所輸入的算式結(jié)果是正確的
假設(shè)我們有一個(gè)算式"( a + b ) / ( c - d )",那么我們可以像下面的代碼一樣用stack來檢查該算式中是否存在括號(hào)匹配問題
#include <iostream> #include <stack> using namespace std; int main(){ stack<char>s; string str = "( a + b ) / ( c - d )"; for(int i=0;i<str.length();i++){ if(str[i]=='(') s.push(str[i]); else if(str[i]==')') s.pop(); } if(s.empty()){ cout<<"括號(hào)匹配成功"<<endl; } else{ cout<<"括號(hào)匹配失敗"<<endl; } return 0; }
以上就是C++中Stack(棧)的使用方法與基本操作詳解的詳細(xì)內(nèi)容,更多關(guān)于C++ Stack的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言從猜數(shù)字游戲中理解數(shù)據(jù)結(jié)構(gòu)
猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用這個(gè)游戲案例理解數(shù)據(jù)結(jié)構(gòu)2022-04-04VS2019簡(jiǎn)單快速的打包可安裝項(xiàng)目(圖文教程)
這篇文章主要介紹了VS2019簡(jiǎn)單快速的打包可安裝項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03C++ boost 時(shí)間與日期處理詳細(xì)介紹
這篇文章主要介紹了C++ boost 時(shí)間與日期處理詳細(xì)介紹的相關(guān)資料,這里提供實(shí)例代碼,及實(shí)現(xiàn)效果,需要的朋友可以參考下2016-11-11C++實(shí)現(xiàn)LeetCode(189.旋轉(zhuǎn)數(shù)組)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(189.旋轉(zhuǎn)數(shù)組),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07