所謂棧是先進後出,下面來看一下**實現
class stack
//新增新元素
add(ele)
//移除乙個元素
remove()
//取棧頂元素
get()
return null;
}//清空棧
clear()
//返回棧的長度
getlength()
}
再來看下他的應用,首先是判斷乙個算數表示式的括號是否一一對應,例如(5+3)*2-(4-3)便一一對應,但是(5+3)*2)-4-(3便不對應,棧可以判斷這種問題,即從左到右遍歷表示式,遇到左括號變將其壓入棧中,遇到右括號則從棧中把左括號取出來抵消掉,最後如果棧棧中還有元素,則表示式不正確,下面來看下**實現
function fn(str){
var s=new stack();
for(var i=0;i還有乙個應用是可以計算算數表示式的值,方法是從左到右把數字依次壓入棧中,當遇到運算子時再從棧中取兩個元素出來進行計算,得到結果後再壓入棧中,迴圈最後得到結果
function fn(num){
var str='';
var s=new stack();
for(var i=0;i上述**最後列印21,結果正確
資料結構及其應用
在程式的世界裡,任何問題或技術的落腳點都是資料結構,所以在學習或研究這些問題或技術時,要注重理解底層或實現過程中所採用的資料結構。本系列會將常用的資料結構進行總結,首先看下樹。一 樹常用的樹形資料結構有 搜尋二叉樹 平衡二叉樹 紅黑樹 完全二叉樹 1.搜尋二叉樹 父子節點滿足大小關係,左子樹都小於根...
資料結構之棧及其基本操作
棧的順序儲存表示 include include include using namespace std define stack int size 100 define stackincrement 10 typedef struct sqstack 構造乙個空棧 在定義了棧的基本結構後,按照設定...
資料結構之 棧的應用
前面幾篇寫的都是資料結構原理性內容,也在寫棧的時候提到了棧的應用場景很欠缺,所以這兩天把棧的幾個應用寫一寫,貼出來以後查閱方便。棧的幾個典型應用例子包括 1 漢諾塔問題 2 括號匹配問題 3 迷宮老鼠問題 4 電路防交叉的佈線問題 接近括號匹配 5 就是這個部落格貼出來的車廂重排問題 其實是乙個排序...