成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

js數(shù)據(jù)結(jié)構(gòu)之棧

LeviDing / 1706人閱讀

摘要:向一個(gè)棧插入新元素又稱(chēng)作進(jìn)棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素從一個(gè)棧刪除元素又稱(chēng)作出棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱(chēng)為棧頂,相對(duì)地,把另一端稱(chēng)為棧底。向一個(gè)棧插入新元素又稱(chēng)作進(jìn)棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱(chēng)作出棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

棧通常的操作:

stack()        // 創(chuàng)建一個(gè)空的棧對(duì)象
push()         // 入棧操作,將元素放至棧頂
pop()          // 出棧操作,將棧頂元素移除并返回
peek()         // 返回棧頂元素,不對(duì)棧做出操作
isEmpty()      // 判斷棧是不是為空
size()         // 返回棧的元素個(gè)數(shù)

使用javascript模擬棧的實(shí)現(xiàn):

function Stack () {
  let items = []
  this.push = function (element) {
    //添加一個(gè)(或幾個(gè))新元素到棧頂
    items.push(element)
  }
  this.pop = function () {
    //移除棧頂?shù)脑?,同時(shí)返回被移除元素
    return items.pop()
  }
  this.peek = function () {
    //返回棧頂?shù)脑?,但并不?duì)棧做任何修改
    return items[items.length - 1]
  }
  this.isEmpty = function () {
    // 判斷棧是不是為空
    return items.length === 0
  }
  this.size = function () {
    // 返回棧里元素的個(gè)數(shù)
    return items.length
  }
  this.clear = function () {
    // 移除棧里所有的元素
    items = []
  }
  this.print = function () {
    console.log(items.toString())
  }
  this.toString = function () {
    return items.toString()
  }
}

用棧解決進(jìn)制數(shù)轉(zhuǎn)換問(wèn)題:

function divide (num, base) {
   // num為需要轉(zhuǎn)換的數(shù), base為要轉(zhuǎn)換的基數(shù)
  let remStack = new Stack(),
      rem,
      remString = ""
  while (num > 0) {
    rem = Math.floor(num % base)
    remStack.push(rem)
    num = Math.floor(num / base)
  }
  while (!remStack.isEmpty()) {
    remString += remStack.pop()
  }
  return remString
}

console.log(divide(18,16))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84080.html

相關(guān)文章

  • 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列

    摘要:于是翻出了機(jī)房里的這本學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法開(kāi)始學(xué)習(xí)程序員的基礎(chǔ)知識(shí)。這本書(shū)用了我最熟悉的來(lái)實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法,而且書(shū)很薄,可以說(shuō)是一本不錯(cuò)的入門(mén)教程。隊(duì)列在頭部刪除元素,尾部添加元素。 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算...

    pingan8787 評(píng)論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)之棧(小白系列文章四)

    摘要:堆棧算法引子棧是計(jì)算機(jī)術(shù)語(yǔ)中比較重要的概念,實(shí)質(zhì)上棧就是一段內(nèi)存區(qū)域,但是棧滿足一定的特性,那就是只有一個(gè)口,具有先入后出的特性,這種特性在計(jì)算機(jī)中有很廣泛的運(yùn)用。 /** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email [email protected] */ 引子 ????棧...

    array_huang 評(píng)論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)之棧(小白系列文章四)

    摘要:堆棧算法引子棧是計(jì)算機(jī)術(shù)語(yǔ)中比較重要的概念,實(shí)質(zhì)上棧就是一段內(nèi)存區(qū)域,但是棧滿足一定的特性,那就是只有一個(gè)口,具有先入后出的特性,這種特性在計(jì)算機(jī)中有很廣泛的運(yùn)用。 /** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email [email protected] */ 引子 ????棧...

    yankeys 評(píng)論0 收藏0
  • [個(gè)人心得]數(shù)據(jù)結(jié)構(gòu)之棧,隊(duì)列。

    摘要:另外棧也可以用一維數(shù)組或連結(jié)串列的形式來(lái)完成。壓棧就是,出棧就是。出棧成功第個(gè)節(jié)點(diǎn)是這是單鏈表形式的棧的源碼地址。隊(duì)列只允許在后端稱(chēng)為進(jìn)行插入操作,在前端稱(chēng)為進(jìn)行刪除操作。 維基百科 堆棧(英語(yǔ):stack)又稱(chēng)為棧,是計(jì)算機(jī)科學(xué)中一種特殊的串列形式的抽象資料型別,其特殊之處在于只能允許在鏈接串列或陣列的一端(稱(chēng)為堆疊頂端指標(biāo),英語(yǔ):top)進(jìn)行加入數(shù)據(jù)(英語(yǔ):push)和輸出數(shù)據(jù)...

    curried 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)之棧(java版)

    摘要:本文力求簡(jiǎn)潔,只包含基礎(chǔ)的棧功能,不想將大片的代碼展示出來(lái),讓讀者興趣索然,閱讀起來(lái)也十分費(fèi)力,如有需要可以自行添加相關(guān)功能比如包中的類(lèi)包含的,等等函數(shù)能力有限,有誤之處還請(qǐng)不吝賜教定義內(nèi)部類(lèi)用于存儲(chǔ)棧元素指向下一個(gè)棧元素的泛型元素方法方法 本文力求簡(jiǎn)潔,只包含基礎(chǔ)的棧功能,不想將大片的代碼展示出來(lái),讓讀者興趣索然,閱讀起來(lái)也十分費(fèi)力,如有需要可以自行添加相關(guān)功能比如java.util...

    hizengzeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<