棧(stack)是一種** lifo(last-in-first-out,後進先出)** 的資料結構。
它是一種受限的線性表,它的限制是僅允許在表的一端進行插入和刪除運算,這一端就被稱為棧頂,另外一端就是棧底。
向乙個棧新增乙個新元素叫做進棧、入棧或者壓棧,它是把新元素放到棧頂元素的上面,成為新的棧頂元素。
從乙個棧中刪除元素叫做出棧或者退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
棧的結構:
建立棧
function
stack()
// 出棧
stack.prototype.
pop=
function()
// 檢視棧頂元素
stack.prototype.
peak
=function()
// 判斷棧是否為空
stack.prototype.
isempty
=function()
// 檢視棧中元素個數
stack.prototype.
size
=function()
// 把棧內元素以字串的形式返回
stack.prototype.
tostring
=function()
}
棧的使用var s =
newstack()
;s.push(10
);s.push(20
);s.push(30
);s.push
(100);
console.
log(s)
;//結果為:stack
console.
log(s.
pop())
;// 結果為:100
console.
log(s.
pop())
;// 結果為:30
console.
log(s)
;// 結果為: stack
console.
log(s.
isempty()
);// 結果為:false
console.
log(s.
peak()
);// 結果為: 20
console.
log(s)
;// 結果為: stack
console.
log(s.
tostring()
);// 結果為: 10 20
十進位制轉換為二進位制:
function
dec2bin
(decnumber)
var binstring ='';
while
(!s.
isempty()
)return binstring;
}console.
log(
dec2bin
(100))
;結果輸出為:1100100
js描述的 資料結構 棧結構 (2)
1.一種受限制的線性結構,這種結構可以基於陣列來實現。2.可以抽象成乙個容器,上面的是棧頂,底下的是棧底。所以僅允許對棧頂進行操作,1.函式式呼叫棧 基於棧的形式來進行函式的整體呼叫。2.遞迴 棧溢位就是其中的一點。push 新增乙個元素到棧頂。pop 移除棧頂的元素。peek 返回棧頂的元素,不對...
js描述的 資料結構 棧結構 (2)
1.一種受限制的線性結構,這種結構可以基於陣列來實現。2.可以抽象成乙個容器,上面的是棧頂,底下的是棧底。所以僅允許對棧頂進行操作,1.函式式呼叫棧 基於棧的形式來進行函式的整體呼叫。2.遞迴 棧溢位就是其中的一點。push 新增乙個元素到棧頂。pop 移除棧頂的元素。peek 返回棧頂的元素,不對...
js資料結構 棧
棧是一種遵循後進先出 lifo 的資料結構,其總共就兩個主要的操作,分別是push和pop。看上面這張圖可以大致的知道,棧的幾個特點 push操作 pop操作 通過上面的幾個特點,來看一看js如何用 實現乙個棧 class stack push操作 push x push乙個新的資料,棧頂的指向也同...