棧是一種遵從後進先出(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 棧的實際應用 二進位制轉十進位制 十進位制轉換任意進製 二進位制 八進位制...