《劍指offer》— JavaScript(20)包含min函數(shù)的棧

包含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)棧:

  1. 棧初始化:創(chuàng)建一個空棧
Init: function () {
    this.STACKMAX = 99;
    this.stack = new Array(this.STACKMACK);
    this.top = -1;
    return this.stack;
}
  1. 判斷??眨?若棧為空返回true,否則返回false
isEmpty: function () {
    if (this.top == -1) {
        return true;
    } else {
        return false;
    }
}
  1. 進(jìn)棧:若棧滿,返回“棧滿”。否則將元素elem作為新的棧頂元素。
Push: function (node) {
    if (this.top == this.STACKMAX - 1) {
        return new Error("棧滿");
    } else {
        this.top++;
        this.stack[this.top] = node;
    }
}
  1. 退棧:刪除棧頂元素,并返回其值
Pop: function () {
    if (this.top == -1) {
        return new Error("空棧,無法刪除棧頂元素!");
    } else {
        return this.stack[this.top--];
    }
}
  1. 讀棧頂元素:返回棧頂元素
Top: function () {
    if (this.top != -1) {
        return this.stack[this.top];
    } else {
        return new Error("空棧,頂元素?zé)o返回值!");
    }
}
  1. 清空棧:將棧清空為空棧
Clear: function () {
    this.top = -1;
}
  1. 棧長度:返回棧的元素個數(shù),既棧的長度
Length: function () {
    return this.top + 1;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,935評論 0 33
  • 單例模式 適用場景:可能會在場景中使用到對象,但只有一個實例,加載時并不主動創(chuàng)建,需要時才創(chuàng)建 最常見的單例模式,...
    Obeing閱讀 2,321評論 1 10
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,854評論 18 399
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,390評論 0 17
  • 項目地址: MobileSafer歡迎 Follow, Star MobileSafer (手機安全小衛(wèi)士)項目說...
    Debug的貓閱讀 3,369評論 1 12

友情鏈接更多精彩內(nèi)容