js陣列實現棧資料結構與練習使用

2021-09-13 15:43:18 字數 1684 閱讀 1229

棧的定義

棧是一種特殊的線性表,棧是一種遵從後進先出(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...