演算法筆記 資料結構 棧

2022-02-19 08:46:43 字數 1583 閱讀 8109

在之前,學過了stl的stack容器,所以以上函式可以通過庫呼叫

但是stl中沒有實現清空函式,所以如果需要實現棧的清空,可以用乙個while迴圈反覆pop出元素直到棧空

while(!st.empty())
[codeup 1918]簡單計算器題目描述

讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
輸入

測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
輸出

對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
樣例輸入

30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 * 92

0

樣例輸出

12178.21
思路

#include#include#include#include#include#includeusing namespace std;

struct node;

string str; // 輸入的字串

stackst; // node型別的棧

queuequ; // node型別的佇列;

mapop; // 用於實現char到int的對映,便於計算

void change()

qu.push(temp); // 送進字尾操作符佇列中

}else

temp.op = str[i];

st.push(temp); // 把該操作符壓入操作符棧中

i++;}}

// 如果操作符棧中還有操作符,就把它彈出到字尾表示式佇列中

while(!st.empty())

}double calculate()

}return st.top().num; // 棧頂元素就是字尾表示式的值

}int main()

while(!st.empty()) st.pop(); // 初始化棧

change();

printf("%.2f\n", calculate());

}return 0;

}

write by gqq

筆記 資料結構 棧

特性 先進後出,不可訪問索引,只能逐漸推入推出 介面inte ce istackds 得到棧中資料個數,屬性 int getlength 同上,方法型別的 bool isempty 檢驗是否為空 void clear 清空 void push t item 推入資料 t pop 獲得棧頂資料並刪去 ...

筆記 資料結構 棧

2 鏈式儲存 3例題4應用 線性表的特點 1 有限,線性表的元素個數稱為線性表的長度 2 有序,乙個接著乙個,除了首位外,每個元素有個前驅元素和乙個後繼元素,元素間是一對一的關係。棧是限定僅在表尾進行插入和刪除的線性表 棧就像是一摞盤子,每次洗碗時將盤子乙個接著乙個向上疊,使用時從上往下乙個乙個取,...

資料結構與演算法 筆記 資料結構與演算法筆記 棧

以前學習的時候都沒怎麼好好的做過筆記,總是東記一點,西寫一點,甚至都不做筆記,導致後面找的時候找不到,最後還是求助搜尋引擎浪費掉很多時間。好腦筋不如個爛筆頭呀。這次又重新學習python的資料結構及演算法 中國mooc上的公開課 就好好做個筆記吧。棧是一種只能在一端進行插入和刪除的線性資料結構。一般...