欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中Stack(棧)的使用方法與基本操作詳解

 更新時(shí)間:2023年05月05日 11:22:50   作者:碼出世界的淡水魚  
Stack是一種常見的數(shù)據(jù)結(jié)構(gòu),常常被用來解決遞歸問題、括號(hào)匹配問題、函數(shù)調(diào)用棧等等。本文將介紹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ù)據(jù)的存儲(chǔ)詳解

    C語言中數(shù)據(jù)的存儲(chǔ)詳解

    這篇文章主要介紹了C語言中數(shù)據(jù)的存儲(chǔ)詳解的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • C語言 函數(shù)缺省參數(shù)詳情

    C語言 函數(shù)缺省參數(shù)詳情

    這篇文章主要介紹了C語言 的函數(shù)缺省參數(shù)、除了介紹函數(shù)全缺省參數(shù),和半缺省參數(shù)還簡(jiǎn)單介紹了函數(shù)聲明、函數(shù)調(diào)用等一些函數(shù)的定義,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • C/C++函數(shù)的調(diào)用約定的使用

    C/C++函數(shù)的調(diào)用約定的使用

    本文主要介紹了C/C++函數(shù)的調(diào)用約定的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C語言從猜數(shù)字游戲中理解數(shù)據(jù)結(jié)構(gòu)

    C語言從猜數(shù)字游戲中理解數(shù)據(jù)結(jié)構(gòu)

    猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用這個(gè)游戲案例理解數(shù)據(jù)結(jié)構(gòu)
    2022-04-04
  • C語言lseek()函數(shù)詳解

    C語言lseek()函數(shù)詳解

    這篇文章主要介紹了C語言lseek()函數(shù)詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • VS2019簡(jiǎn)單快速的打包可安裝項(xiàng)目(圖文教程)

    VS2019簡(jiǎn)單快速的打包可安裝項(xiàng)目(圖文教程)

    這篇文章主要介紹了VS2019簡(jiǎn)單快速的打包可安裝項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C++  boost 時(shí)間與日期處理詳細(xì)介紹

    C++ boost 時(shí)間與日期處理詳細(xì)介紹

    這篇文章主要介紹了C++ boost 時(shí)間與日期處理詳細(xì)介紹的相關(guān)資料,這里提供實(shí)例代碼,及實(shí)現(xiàn)效果,需要的朋友可以參考下
    2016-11-11
  • 基于C++實(shí)現(xiàn)三種不同版本的通訊錄

    基于C++實(shí)現(xiàn)三種不同版本的通訊錄

    這篇文章主要為大家詳細(xì)介紹了如何通過C++實(shí)現(xiàn)三種不同版本的通訊錄(動(dòng)態(tài)版本、靜態(tài)版本、文件版本),文中的示例代碼講解詳細(xì),希望對(duì)大家有所幫助
    2022-11-11
  • C++實(shí)現(xiàn)LeetCode(189.旋轉(zhuǎn)數(shù)組)

    C++實(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
  • C語言指針教程示例詳解

    C語言指針教程示例詳解

    這篇文章主要為大家介紹了C語言指針教程的示例詳解
    2022-02-02

最新評(píng)論