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

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

 更新時(shí)間:2023年05月05日 11:22:50   作者:碼出世界的淡水魚(yú)  
Stack是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),常常被用來(lái)解決遞歸問(wèn)題、括號(hào)匹配問(wèn)題、函數(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í)也只能從棧頂開(kāi)始。

在C++中,stack通常是通過(guò)STL(Standard Template Library)庫(kù)中的stack模板實(shí)現(xiàn)的。STL stack是基于deque(雙端隊(duì)列)實(shí)現(xiàn)的,通過(guò)deque模板我們可以實(shí)現(xiàn)stack的一些操作。

二、stack的基本操作

1、頭文件

在使用STL中stack模板之前,我們需要包括頭文件#include<stack>。

#include <iostream>   
#include <stack>  

using namespace std;  

2、stack創(chuàng)建方式

在C++中,我們使用類模板stack 來(lái)實(shí)現(xiàn)stack。其中T是存儲(chǔ)元素的類型。stack通過(guò)調(diào)用默認(rèn)構(gòu)造函數(shù)生成一個(gè)空stack

stack<int>a;   // 創(chuàng)建一個(gè)空stack

3、棧頂和棧底操作

在stack中,我們可以分別通過(guò)stack::top()和stack::back()來(lái)訪問(wèn)棧頂和棧底元素

stack<int>a;

a.push(1);
a.push(2);

cout << a.top() << endl;   // 輸出2
cout << a.back() << endl;  // 輸出1

4、元素添加和刪除

在stack中,我們通過(guò)push()函數(shù)向棧頂添加一個(gè)元素。同時(shí),我們也可以使用pop()函數(shù)來(lái)從棧頂刪除一個(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、棧的大小操作

我們可以通過(guò)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、判斷棧是否為空

通過(guò)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)常被用來(lái)解決數(shù)學(xué)表達(dá)式中的括號(hào)匹配問(wèn)題。在這個(gè)問(wèn)題中,我們需要使用stack來(lái)匹配左右括號(hào),以確保所輸入的算式結(jié)果是正確的

假設(shè)我們有一個(gè)算式"( a + b ) / ( c - d )",那么我們可以像下面的代碼一樣用stack來(lái)檢查該算式中是否存在括號(hào)匹配問(wèn)題

#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語(yǔ)言實(shí)現(xiàn)俄羅斯方塊

    C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • OpenCV3實(shí)現(xiàn)車牌識(shí)別(C++版)

    OpenCV3實(shí)現(xiàn)車牌識(shí)別(C++版)

    這篇文章主要為大家詳細(xì)介紹了OpenCV3實(shí)現(xiàn)車牌識(shí)別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++11/C++14中constexpr的使用案例詳解

    C++11/C++14中constexpr的使用案例詳解

    C++11規(guī)定,允許將變量聲明為constexpr類型以便由編譯器來(lái)驗(yàn)證變量的值是否是一個(gè)常量表達(dá)式,這篇文章主要介紹了C++11/C++14中constexpr的使用,需要的朋友可以參考下
    2023-06-06
  • C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))

    C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 盤(pán)點(diǎn)分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù)

    盤(pán)點(diǎn)分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù)

    這篇文章主要為大家盤(pán)點(diǎn)及分析C語(yǔ)言中少見(jiàn)卻強(qiáng)大的字符串函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法

    C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法

    這篇文章主要介紹了C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法,分別是strchr()函數(shù)和strrchr()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • 解決VC++編譯報(bào)錯(cuò)error C2248的方案

    解決VC++編譯報(bào)錯(cuò)error C2248的方案

    這篇文章主要介紹了解決VC++編譯報(bào)錯(cuò)error C2248的方案的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • Qt中QGroupBox控件的實(shí)現(xiàn)

    Qt中QGroupBox控件的實(shí)現(xiàn)

    QGroupBox 是 Qt 框架中一個(gè)非常有用的控件,它主要用于組織和管理一組相關(guān)的控件,本文主要介紹了Qt中QGroupBox控件的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • wince禁止程序標(biāo)題欄上的退出按鈕示例

    wince禁止程序標(biāo)題欄上的退出按鈕示例

    這篇文章主要介紹了wince禁止程序標(biāo)題欄上的退出按鈕示例,需要的朋友可以參考下
    2014-02-02
  • c++實(shí)現(xiàn)通用參數(shù)解析類示例

    c++實(shí)現(xiàn)通用參數(shù)解析類示例

    使用命令行執(zhí)行程序的時(shí)候在程序后可跟多個(gè)參數(shù)列表,而main函數(shù)的argc和argv分別存儲(chǔ)了相關(guān)的參數(shù)個(gè)數(shù)和參數(shù)內(nèi)容,而循環(huán)輸入相關(guān)的時(shí)候就需要用戶自己來(lái)解析相關(guān)參數(shù)。以下代碼用c++的方式實(shí)現(xiàn)了相關(guān)解析的封裝,使用起來(lái)非常方便
    2014-03-03

最新評(píng)論