包含min函數(shù)的棧
題目描述
定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧最小元素的min函數(shù)。
實現(xiàn)代碼
var stack=[];
function push(node)
{
stack.push(node);
}
function pop()
{
return stack.pop();
}
function top()
{
return stack[0];
}
function min()
{
return Math.min.apply(this,stack);
}
module.exports = {
push : push,
pop : pop,
top : top,
min : min
};
相關(guān)知識
棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出?;蛲藯#前褩m斣貏h除掉,使其相鄰的元素成為新的棧頂元素。
JavaScript用數(shù)組實現(xiàn)棧:
- 棧初始化:創(chuàng)建一個空棧
Init: function () {
this.STACKMAX = 99;
this.stack = new Array(this.STACKMACK);
this.top = -1;
return this.stack;
}
- 判斷??眨?若棧為空返回true,否則返回false
isEmpty: function () {
if (this.top == -1) {
return true;
} else {
return false;
}
}
- 進(jìn)棧:若棧滿,返回“棧滿”。否則將元素elem作為新的棧頂元素。
Push: function (node) {
if (this.top == this.STACKMAX - 1) {
return new Error("棧滿");
} else {
this.top++;
this.stack[this.top] = node;
}
}
- 退棧:刪除棧頂元素,并返回其值
Pop: function () {
if (this.top == -1) {
return new Error("空棧,無法刪除棧頂元素!");
} else {
return this.stack[this.top--];
}
}
- 讀棧頂元素:返回棧頂元素
Top: function () {
if (this.top != -1) {
return this.stack[this.top];
} else {
return new Error("空棧,頂元素?zé)o返回值!");
}
}
- 清空棧:將棧清空為空棧
Clear: function () {
this.top = -1;
}
- 棧長度:返回棧的元素個數(shù),既棧的長度
Length: function () {
return this.top + 1;
}