棧的定義
棧是一種特殊的線性表,棧是一種遵從後進先出(lifo)原則的有序集合。新新增的或待刪除的元素都儲存在棧的
同一端,稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。
在現實生活中也能發現很多棧的例子。例如,下圖裡的羽毛球桶就是乙個例子
下面我們來實現乙個棧
function stack();
//從棧頂移除元素
this.pop=function()
//返回棧頂元素
this.top=function()
//判斷棧是否為空
this.isempty=function()
//返回棧的長度
this.size=function()
//清空棧
this.clear=function()
}
我們可以用棧來校驗字串中的括號是否合法
//判斷括號是否合法函式
function is_leagl_brackets(string)else
}//彈出棧頂元素
this.pop=function()
//返回棧的最小值
this.min=function()
}var minstack=new minstack();
minstack.push(2);
minstack.push(1);
minstack.push(23);
console.log(minstack.min()) //1
minstack.pop();
minstack.pop();
console.log(minstack.min()) //2
高階版:將中綴表示式轉化為字尾表示式 [『1』,』+』,『2』]=>[『1』,『2』,』+』]
//中綴表示式轉字尾表示式
var priority_map = ;
function infix_exp_2_postfix_exp(exp)
// 當前的運算子入棧
stack.push(item);}}
// for迴圈結束後, 棧裡可能還有元素,都彈出放入到postfix_lst中
while(!stack.isempty())
return postfix_lst
};// 12+3
console.log(infix_exp_2_postfix_exp(["12","+", "3"]))
// 2-3+2
console.log(infix_exp_2_postfix_exp(["2","-", "3", "+", "2"]))
// (1+(4+5+3)-3)+(9+8)
var exp = ["(","1","+","(","4","+","5","+","3",")","-","3",")","+","(","9","+","8",")"];
console.log(infix_exp_2_postfix_exp(exp))
好了我們已經大概了解棧了,如果上方例子用陣列想的話會難好多吧! js實現資料結構 棧
棧是一種遵從後進先出 lifo 原則的有序集合。新新增的或待刪除的元素都儲存在棧的同一端,稱作棧頂,另一端就叫棧底。後進先出 新元素都靠近棧頂,舊元素都接近棧底,所以新元素會比舊元素要先出棧 放在桌子上的一堆書和餐廳裡堆放的盤子 建立棧 建立乙個類來表示棧,宣告棧的各種屬性和方法,如下 宣告棧和棧的...
資料結構之陣列實現棧結構
include include int top int s 返回棧頂位置 int stack empty int s 判斷棧是否為空 int stack full int s 判斷棧是否已滿 void push int s,int x int pop int s return x int main ...
資料結構 棧 陣列的實現
首先是定義棧的基本結構,因為用陣列實現 private string stack private int top 0 然後是構造方法 stackofstrings int capacity 然後是push,注意,top永遠指向的是壓入元素的後一位。public void push string st...