(二)學習資料結構與演算法 棧

2021-08-26 08:24:06 字數 2124 閱讀 6962

棧是資料結構中最基本的一種結構,對於資料來說,很多時候都是對資料的增、刪、查、改

1.棧在生活中的常見例子

一摞書、堆盤子

2.棧的特點

先進後出(fist in last out,filo)

3.棧的實現

1)建立棧

function stack()
2)棧中宣告的方法

增:push(element(s)):新增乙個或多個元素到棧頂

刪:pop():移除棧頂的元素,同時返回被移除的元素

查:peek():返回棧頂的元素,不對棧做任何修改

isempty():檢視棧是否為空,如果是,則返回true,為否,則為false

size():檢視棧中元素個數,返回值為棧中元素的個數

改:clear():清空棧內的所有元素

3)具體實現

增:將元素進棧

this.push=function(element)
刪:將元素出棧

this.pop=function()
查:

1)檢視棧頂元素

this.peek=function()
2)檢視棧是否為空

this.isempty=function()
3)檢視當前棧的元素個數

this.size=function()
改:改動棧內元素(這裡不是很準確,資料中的改應該是對某個元素來改動,這裡為了方便自己記住,就這麼歸類了)

this.clear=function()
列印棧中的所有元素:

使用tostring()方法,將陣列轉為字串

this.print=function()
4.完整實現**

function stack()

this.pop=function()

this.peek=function()

this.size=function()

this.isempty=function()

this.clear=function()

this.print=function()

}//測試部分

//宣告乙個例項

let stack=new stack();

stack.isempty();//檢視棧是否為空

stack.push(1);

stack.push(2);

console.log(stack.pop());

console.log(stack.size());

console.log(stack.isempty());

console.log(stack.peek());

console.log(stack.print());

5.棧的應用

在回溯問題中,可以儲存訪問過的任務或路徑、撤銷操作

使用棧的三個著名演算法:

1)十進位制轉二進位制問題

2)平衡圓括號問題

3)漢諾塔問題

十進位制轉二進位制

思路:除2取餘法,將每次求餘得到的數入棧,出棧的順序則為二進位制數

function divideby2(decnumber)

while(!remstack.isempty())

return binarystring;

}//測試例子

console.log(divdeby2(10));

擴充套件,實現十進位制與任意進製轉換演算法

function baseconverter(decnumber,base)

while(!remstack.isempty())

return basestring;

}//測試例子

console.log(baseconverter(100345,2));

資料結構與演算法 二 (棧 佇列)

這篇筆記主要寫棧和佇列,因為他們的特點是相反的 一 棧特點 先進後出,類似於子彈入彈夾,先進去的子彈最後才發射 這裡也使用陣列來模擬一下,有四個方法,壓棧,取棧,檢視棧頂,是否為空 棧的底層我們使用陣列來儲存資料 int elements public stacktest1 壓棧 壓入元素 publ...

資料結構與演算法《棧》

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

棧(資料結構與演算法)

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...