亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解

 更新時(shí)間:2022年06月29日 11:14:34   作者:言不及行yyds  
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表,也成稱為先進(jìn)后出表,下面這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧的相關(guān)資料,需要的朋友可以參考下

1.認(rèn)識(shí)棧

:(stack)又名堆棧,它是一種運(yùn)算受限的線性表。遵循后進(jìn)先出(LIFO)

棧頂:限定僅在表尾進(jìn)行插入和刪除操作的線性表,

棧底:限定僅在表頭進(jìn)行插入和刪除操作的線性表。

進(jìn)棧:向一個(gè)棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;

出棧:從一個(gè)棧刪除元素又稱作出?;蛲藯?,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素

2.面向過程方法源碼編寫棧

2.1思考

面向過程是什么:

面向過程就是將解決問題的步驟分析出來,

然后用函數(shù)實(shí)現(xiàn),

只要一步一步的執(zhí)行調(diào)用他就可以了。

2.2需要實(shí)現(xiàn)的方法

  • push(element)添加一個(gè)或多個(gè)元素到棧頂
  • pop()刪除錢頂?shù)脑?,并返回移除的元?/li>
  • peek()返回棧頂?shù)脑?/li>
  • isEmpty()用于判斷棧是否為空,空則為空
  • clear()用于清空棧的元素
  • size()用于返回棧中元素的個(gè)數(shù)

在實(shí)現(xiàn)之前我們思考一下我們?cè)趺磳?shí)現(xiàn)

首先我們借用數(shù)組的方法來實(shí)現(xiàn),所以我們需要?jiǎng)?chuàng)建

一個(gè)空數(shù)組來模擬棧

2.3源碼實(shí)現(xiàn),并調(diào)用類

構(gòu)建一個(gè)類,用數(shù)組來模擬,

在類中書寫各種方法

部分調(diào)用數(shù)組的方法。

總的來說就是用類來包裝

數(shù)組的方法來實(shí)現(xiàn)棧的模擬

class Stack {
   constructor() {
       this.item = []
         }
   push(element) {
        this.item.push(element)
               }
   pop() {
      return this.item.pop()
          }
   peek() {
       return this.item[this.item.length - 1]
            }
   isEmpty() {
       return this.item.length === 0
            }
   clear() {
         this.item = []
   size() {
          return this.item.length
            }
        }
//實(shí)例化Stack類
const stack = new Stack()
stack.push(4)
stack.push(6)
console.log( stack.pop())
console.log(stack.peek())
console.log(stack.isEmpty())
console.log(stack.size())

運(yùn)行結(jié)果:

3.用面向?qū)ο蟮姆椒▉碓创a書寫

3.1思考

面向?qū)ο螅?/strong>

就是將構(gòu)建問題的事物,分解成若干個(gè)對(duì)象,

建立對(duì)象不是為了完成某個(gè)步驟,而是為了

描述某個(gè)事物在解決問題過程的行為

3.2需要實(shí)現(xiàn)的方法

  • push(element)添加一個(gè)或多個(gè)元素到棧頂
  • pop()刪除錢頂?shù)脑?,并返回移除的元?/li>
  • peek()返回棧頂?shù)脑?/li>
  • isEmpty()用于判斷棧是否為空,空則為空
  • clear()用于清空棧的元素
  • size()用于返回棧中元素的個(gè)數(shù)
  • toString()用于將棧以字符串的形式打印

那么在實(shí)現(xiàn)這個(gè)類,我們用對(duì)象來模擬棧

3.3源碼及使用類

class Stack {
   constructor() {
      this.count=0
      this.items = {}
            }
   push(element) {
      this.items[this.count]=element
      this.count++
            }
    pop() {
       if(this.isEmpty()){
           return undefined
          }
       this.count--
       const result=this.items[this.count]
       delete this.items[this.count]
       return result
            }
    peek() {
          if(this.isEmpty()){
               return undefined
               }
         return this.items[this.count-1]
            }
    isEmpty() {
         return this.count===0
            }
    clear() {
        this.items={}
        this.count=0
          }
    size() {
       return this.count
           }
    toString(){
       if(this.isEmpty()){
        return undefined
               }
         let objectString=`${this.items[0]}`
          for(let i=1;i<this.count;i++){
               objectString=`${objectString},${this.items[i]}`
               }
         return objectString
            }
        }
 
  const stack = new Stack()
  stack.push(23)
  stack.push(34)
  stack.push(80)
  console.log( stack.pop())
  console.log(stack.peek())
  console.log(stack.isEmpty())
  console.log(stack.size())
  console.log(stack.toString())

在使用對(duì)象來模擬棧時(shí),采用了鍵:值的方式 

來存儲(chǔ)數(shù)據(jù),比如this.items[this.count]=element

在這個(gè)結(jié)構(gòu)中用this.count來記錄棧的大小,

當(dāng)我們向里面插入一個(gè)數(shù)字時(shí),就分配count為鍵

插入的值為值。這個(gè)時(shí)候就需要將this.count++.

關(guān)于pop()與peek(),toString()方法都需要

先判斷棧是否為空,如果為空則返回undefined。

4.總結(jié)

  • 了解了面向?qū)ο笈c面向過程
  • 掌握了兩種方式用什么來模擬棧
  • 對(duì)棧模擬進(jìn)行源碼設(shè)計(jì)

到此這篇關(guān)于JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解的文章就介紹到這了,更多相關(guān)JS棧詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序開發(fā)WXML模板語法基礎(chǔ)教程

    微信小程序開發(fā)WXML模板語法基礎(chǔ)教程

    這篇文章主要介紹了微信小程序模板語法,WXML(WeiXin?Markup?Language)是框架設(shè)計(jì)的一套標(biāo)簽語言,結(jié)合基礎(chǔ)組件、事件系統(tǒng),可以構(gòu)建出頁面的結(jié)構(gòu),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • JavaScript仿京東輪播圖效果

    JavaScript仿京東輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript仿京東輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • js身份證判斷方法支持15位和18位

    js身份證判斷方法支持15位和18位

    這篇文章主要介紹了js身份證判斷方法支持15位和18位,需要的朋友可以參考下
    2014-03-03
  • Javascript 中介者模式實(shí)例

    Javascript 中介者模式實(shí)例

    在頁面上,用戶會(huì)有很多的操作 ,每進(jìn)行一次操作我們需要去展示操作的結(jié)果,在這里我們有了一個(gè)問題,我們應(yīng)如何去展示不同的結(jié)果呢?
    2009-12-12
  • 微信小程序點(diǎn)擊view動(dòng)態(tài)添加樣式過程解析

    微信小程序點(diǎn)擊view動(dòng)態(tài)添加樣式過程解析

    這篇文章主要介紹了微信小程序點(diǎn)擊view動(dòng)態(tài)添加樣式過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • js+CSS 圖片等比縮小并垂直居中實(shí)現(xiàn)代碼

    js+CSS 圖片等比縮小并垂直居中實(shí)現(xiàn)代碼

    本例子在在 ff 2.0/ ie6 / ie7 中測(cè)試通過。但在 opera 8.5 cn中沒有通過。希望大家測(cè)試。
    2008-12-12
  • 淺談頁面裝載js及性能分析方法

    淺談頁面裝載js及性能分析方法

    這篇文章主要簡(jiǎn)單介紹了頁面裝載js及性能分析方法的相關(guān)資料,需要的朋友可以參考下
    2014-12-12
  • Bootstrap導(dǎo)航條學(xué)習(xí)使用(一)

    Bootstrap導(dǎo)航條學(xué)習(xí)使用(一)

    這篇文章主要為大家詳細(xì)介紹了Bootstrap導(dǎo)航條的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Bootstrap CSS組件之分頁(pagination)和翻頁(pager)

    Bootstrap CSS組件之分頁(pagination)和翻頁(pager)

    這篇文章主要介為大家詳細(xì)紹了Bootstrap CSS組件之分頁和翻頁的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript中常見的數(shù)據(jù)類型判斷方法小結(jié)

    JavaScript中常見的數(shù)據(jù)類型判斷方法小結(jié)

    在?JS?編程中,正確判斷數(shù)據(jù)類型是必備技能,也是面試常問的內(nèi),本文將探討四種常用的數(shù)據(jù)類型判斷方法,通過了解它們的特點(diǎn)和適用范圍,能夠更好地處理不同數(shù)據(jù)類型的情況,避免出現(xiàn)錯(cuò)誤和提升代碼質(zhì)量,需要的朋友可以參考下
    2023-06-06

最新評(píng)論