最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript編程實(shí)現(xiàn)棧的方法詳解【經(jīng)典數(shù)據(jù)結(jié)構(gòu)】

 更新時(shí)間:2017年04月11日 14:23:15   作者:布瑞澤的童話  
這篇文章主要介紹了javascript編程實(shí)現(xiàn)棧的方法,簡單說明了棧的概念、特點(diǎn)并結(jié)合實(shí)例形式分析了javascript棧的定義、入棧、出棧等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了javascript編程實(shí)現(xiàn)棧的方法。分享給大家供大家參考,具體如下:

棧是限定僅在表尾進(jìn)行插入或刪除操作的線性表,棧是先進(jìn)后出的。棧的表尾稱為棧頂(top),而表頭端稱為棧底(bottom)。

和線性表類似,棧也有兩種存儲(chǔ)表示方法,順序棧鏈棧。

這里講一下順序棧,設(shè)置指針top指示棧頂元素在順序棧中的位置。通常的做法就是以top=0表示空棧。base為棧底指針,top為棧頂指針。

如果base為null,則表示棧結(jié)構(gòu)不存在,如果top=base則表示空棧。每當(dāng)插入一個(gè)新的元素,top+1,刪除元素,top-1。因此,非空棧中top始終在棧頂元素的下一位置上。

如下圖所示

JavaScript中自帶了數(shù)組的push和pop方法,其原理無非就是數(shù)組最后繼續(xù)添加和刪除數(shù)組最后一個(gè)元素。這里我們自己實(shí)現(xiàn)一遍棧的操作,代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JS棧</title>
  </head>
  <body>
    <script type="text/javascript">
    function Stack(count){
      var top=-1;//top頭指針
      this.myArray=new Array();
      if(count!=undefined){
        this.count=count;
        this.myArray=new Array(this.count);
      }else{
        this.count=0;
      }
      //入棧
      this.In=function(value){
        if(top==this.count){
          return false;
        }else{
          ++top;
          this.myArray[top]=value;
          return true;
        }
        return false;
      }
      //出棧
      this.Out=function(){
        if(top==-1){
          return false;
        }else{
          var removeValue=this.myArray[top];
          this.myArray[top]=null;
          top--;
          return removeValue;
        }
      }
      this.Clear=function(){
        this.top=-1;
      }
      //遍歷棧
      this.tostring=function(){
        for(var i=0;i<this.myArray.length;i++){
          document.write(this.myArray[i]+'<br>');
        }
      }
    }
    Stack(3);
    In(1);
    In(2);
    In(3);
    tostring();//1 2 3
    Out();
    Out();
    tostring();//1 null null
    In(4);
    tostring();//1 4 null
    </script>
  </body>
</html>

首先需要定義頭指針

function Stack(count){
 var top=-1;//top頭指針
 this.myArray=new Array();
 if(count!=undefined){
  this.count=count;
  this.myArray=new Array(this.count);
 }else{
  this.count=0;
 }

然后是入棧操作

//入棧
this.In=function(value){
  if(top==this.count){
   return false;
  }else{
   ++top;
   this.myArray[top]=value;
   return true;
  }
  return false;
}

出棧操作

//出棧
this.Out=function(){
  if(top==-1){
   return false;
  }else{
   var removeValue=this.myArray[top];
   this.myArray[top]=null;
   top--;
   return removeValue;
  }
}

鏈棧的操作和鏈表類似,這里就不做詳細(xì)介紹了。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • uni-app操作數(shù)據(jù)庫的三種方法總結(jié)

    uni-app操作數(shù)據(jù)庫的三種方法總結(jié)

    數(shù)據(jù)庫操作的,可以采用多方案,下面這篇文章主要給大家介紹了關(guān)于uni-app操作數(shù)據(jù)庫的三種方法,文中通過實(shí)例代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • javascript 操作符(~、&、|、^、<<、>>)使用案例

    javascript 操作符(~、&、|、^、<<、>>)使用案例

    這篇文章主要介紹了javascript 操作符(~、&、|、^、<<、>>)使用案例,非常的全面,需要的朋友可以參考下
    2014-12-12
  • js中用cssText設(shè)置css樣式的簡單方法

    js中用cssText設(shè)置css樣式的簡單方法

    下面小編就為大家?guī)硪黄猨s中用cssText設(shè)置css樣式的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 插件:檢測javascript的內(nèi)存泄漏

    插件:檢測javascript的內(nèi)存泄漏

    插件:檢測javascript的內(nèi)存泄漏...
    2007-03-03
  • JS鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn)方法

    JS鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn)方法

    程序開發(fā)人員可以使用一些簡單的技術(shù)來改進(jìn)自己的代碼編寫工作。你可以寫一些函數(shù)來處理各種常見任務(wù),以節(jié)省時(shí)間;也可以改進(jìn)一下代碼的實(shí)現(xiàn)方式,比如你可以把方法的鏈?zhǔn)秸{(diào)用技術(shù)用到自己所寫的JS庫中,把自己喜歡的方法串起來調(diào)用。
    2013-03-03
  • 原生js+canvas實(shí)現(xiàn)貪吃蛇效果

    原生js+canvas實(shí)現(xiàn)貪吃蛇效果

    這篇文章主要為大家詳細(xì)介紹了原生js+canvas實(shí)現(xiàn)貪吃蛇效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 微信小程序點(diǎn)擊滾動(dòng)到指定位置的實(shí)現(xiàn)

    微信小程序點(diǎn)擊滾動(dòng)到指定位置的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序點(diǎn)擊滾動(dòng)到指定位置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 微信小程序使用Echarts和分包的完整步驟

    微信小程序使用Echarts和分包的完整步驟

    這篇文章主要給大家介紹了關(guān)于微信小程序使用Echarts和分包的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • js中的事件委托或是事件代理使用詳解

    js中的事件委托或是事件代理使用詳解

    這是前端面試的經(jīng)典題型,要去找工作的小伙伴看看還是有幫助的,需要的朋友可以參考下
    2017-06-06
  • JS+CSS實(shí)現(xiàn)經(jīng)典的左側(cè)豎向滑動(dòng)菜單效果

    JS+CSS實(shí)現(xiàn)經(jīng)典的左側(cè)豎向滑動(dòng)菜單效果

    這篇文章主要介紹了JS+CSS實(shí)現(xiàn)經(jīng)典的左側(cè)豎向滑動(dòng)菜單效果,涉及JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁面元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09

最新評論

亳州市| 兴安盟| 化德县| 湖北省| 邵武市| 宝清县| 老河口市| 临汾市| 孙吴县| 获嘉县| 上杭县| 鄢陵县| 台州市| 崇明县| 河间市| 秦安县| 泸定县| 武鸣县| 营口市| 新津县| 阿克| 巨鹿县| 合山市| 蛟河市| 富宁县| 鹤壁市| 武乡县| 临邑县| 乐昌市| 平乐县| 博爱县| 姚安县| 甘谷县| 金堂县| 会同县| 永春县| 唐山市| 阿瓦提县| 嵊泗县| 晋州市| 澄迈县|