資料結構與演算法 棧的應用

2021-10-13 17:17:57 字數 1151 閱讀 7273

逆序輸出

輸出的次序和處理次序相反,而且遞迴的深度不容易預知。比如進製轉換,括號匹配

//進製轉換

void

convert

(stack<

char

>

&s,int n,

int base)

;while

(n >0)

}

括號匹配

//括號匹配

bool

paren

(vector<

char

>

& v)

elseif(

!s.empty()

)else

}return s.

empty()

;}

括號匹配,看似不需要使用棧,儲存遇到( +1,遇到右括號-1,看最後的數值是否為0即可,但是這樣的話,如果加入多種括號就無法匹配

遞推巢狀

具有相似性的問題可以遞迴,但是分支和巢狀深度不確定。比如棧混洗(乙個序列是否為另一棧的出棧的序列)

bool

ispermutaionseq1

(stack<

int>

& ori, stack<

int>

& seq)

while

(!ori.

empty()

)if(s.top()

== tem.

top())

cout << endl;

}while

(!s.

empty()

&& s.

top(

)== seq.

top())

return s.

empty()

;}

延遲緩衝

在預讀取足夠長以後才能處理字首 比如四則運算計算。

主體思想是,將操作符和元素分開棧存放

棧式計算

rpn 逆波蘭表示式

這比上述四則運算簡單,直接使用乙個棧,元素和符號都存入棧後遇到乙個操作符計算,然**棧就可以了。

逆波蘭式的轉換也藏在上面四則的求值演算法中。

資料結構與演算法(4) 棧的應用

include include include using namespace std bool matchbrackets char pstr else if pstr i pstr i pstr i else s.top else if s.empty else int main char pt...

資料結構 棧與棧的應用

棧是非常重要的線性資料結構之一,其中一端為棧頂,加入元素和取出元素全部在棧頂端進行,滿足lifo last in first out,後進先出 的性質。考慮這樣乙個問題 您需要寫一種資料結構,維護一系列數,初始為空。定義其中一端為頂,另一端為底,要求提供三種操作 1 格式 111x xx,表示在最頂...

資料結構與演算法筆記 棧及棧的應用

目錄前言 一 棧的結構 二 基本操作 三 棧的應用 1.棧模擬 1 出棧序列判斷 2 表示式求值 luogu p1175 3 判斷括號是否匹配 luogu p739 2.凸包 凸殼 luogu p5155 3.遞迴 4.單調棧 總結 前言 棧 stack 是一種後進先出 lifo,last in f...