js實現資料結構 棧

2021-09-01 14:23:46 字數 1744 閱讀 1952

棧是一種遵從後進先出(lifo)原則的有序集合。新新增的或待刪除的元素都儲存在棧的同一端,稱作棧頂,另一端就叫棧底。

後進先出:新元素都靠近棧頂,舊元素都接近棧底,所以新元素會比舊元素要先出棧

放在桌子上的一堆書和餐廳裡堆放的盤子

建立棧:建立乙個類來表示棧,宣告棧的各種屬性和方法,**如下:

//宣告棧和棧的屬性和方法

function stack()

重寫棧的系列方法,**如下:

function push(element) 

function pop()

function peek()

function length()

function clear()

以上是棧的基本定義,包括屬性,方法等。

首先我們需要初始化stack類,然後驗證一下棧是不是為空(輸出是true,因為棧內沒有新增元素)

var stack = new stack();

console.log(stack.length==0);//輸出為true

接下來,往棧裡新增一些元素(這裡新增的是5和8,你也可以新增任何型別的元素) 

stack.push(5);

stack.push(8);

檢視棧頂元素

console.log(stack.peek());//輸出8
統計棧內元素個數和判空

console.log(items.length);//輸出2

console.log(stack.length==0);//輸出false

數制之間的轉換,一般的是十進位制的數轉換成2進製,8進製,16進製制等。

例如將十進位制的轉換成2進製的,大概過程是這樣,如下圖:

利用該轉換的原理,實現其他的轉換,**如下:

function baseconverter(decnumber,base)

while ( remstack.length() >0 )

return basestring;

}console.log(baseconverter(10,2));//輸出1010

console.log(baseconverter(100345,8));//輸出303771

console.log(baseconverter(100345,16));//輸出187f9

//判斷回文字串

function ispalindrome(word)

var newstr = "";

while (s.length() > 0)

if(word === newstr)

return false;

}console.log(ispalindrome("abcdcba"));//輸出true

//使用棧實現遞迴,計算階乘

function fun(num)else

};console.log(fun(5));//輸出120

js資料結構 棧

棧是一種遵循後進先出 lifo 的資料結構,其總共就兩個主要的操作,分別是push和pop。看上面這張圖可以大致的知道,棧的幾個特點 push操作 pop操作 通過上面的幾個特點,來看一看js如何用 實現乙個棧 class stack push操作 push x push乙個新的資料,棧頂的指向也同...

js資料結構 棧

棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素...

js 資料結構 棧

棧 先進後出,新新增和待刪除的元素都儲存在棧頂。可以用陣列的push方法入棧,pop出棧。class stack push element pop peek isempty size clear print tostring 棧的實際應用 二進位制轉十進位制 十進位制轉換任意進製 二進位制 八進位制...