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

JavaScript棧和隊列相關(guān)操作與實現(xiàn)方法詳解

 更新時間:2018年12月07日 08:41:10   作者:hlinghoney  
這篇文章主要介紹了JavaScript棧和隊列相關(guān)操作與實現(xiàn)方法,結(jié)合實例形式較為詳細的分析了javascript棧和隊列的概念、原理、定義、用法及相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了JavaScript棧和隊列相關(guān)操作與實現(xiàn)方法。分享給大家供大家參考,具體如下:

一、棧的介紹

棧就是和列表類似的一種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)只能在棧頂添加或者刪除。棧是一種特殊的列表,棧內(nèi)的元素只能通過列表的一端訪問,成為棧頂。棧具有后進先出的特點,所以任何不在棧頂?shù)脑囟紵o法訪問。

后進先出(LIFO,last-in-first-out)的數(shù)據(jù)結(jié)構(gòu)。

對棧的操作

1.對棧的兩種主要操作為將一個元素壓入棧和將一個元素彈出棧。

入棧:push();
出棧:pop();

2.預(yù)覽棧頂?shù)脑?code>peek();

pop()雖然可以訪問棧頂元素,但調(diào)用后,棧頂元素也從棧中永久性的被刪除。peek()方法只返回棧頂元素,并不刪除它。

對棧的實現(xiàn)

定義stack類的構(gòu)造函數(shù):

function Stack(){
 this.dataStore=[];//數(shù)組dataStore保存棧內(nèi)元素,初始化為空數(shù)組
 this.top=0;
 //top為棧頂位置,被構(gòu)造函數(shù)初始化為0,表示棧頂對應(yīng)數(shù)組的起始位置0
 this.push=push;
 this.pop=pop;
 this.peek=peek;
}

實現(xiàn)push()方法:

function push(element){
 this.dataStore[this.top++]=element;
}

實現(xiàn)pop()方法:

function pop(element){
 return this.dataStore[--this.top];
 //pop方法與push方法相反,它返回棧頂元素,同時將變量top的值減1
}

實現(xiàn)peek()方法:

function peek(element){
 return this.dataStore[this.top-1];
 //peek方法返回數(shù)組的第top-1個位置的元素,即棧頂元素。
}

如果對一個空棧調(diào)用peek()方法,結(jié)果為undefined,因為棧是空的,棧頂沒有任何元素。

實現(xiàn)length()

需要知道棧內(nèi)存儲了多少元素,length()方法通過返回變量top值得方法返回棧內(nèi)的元素個數(shù)。

function length(){
 return this.top();
}

實現(xiàn)clear()

clear()將變量top的值設(shè)置為0,清空一個棧:

function clear(){
 this.top=0;
}

總結(jié):Stack類

function stack(){
 this.dataStore=[];
 this.top=0;
 this.push=push;
 this.pop=pop;
 this.peek=peek;
 this.clear=clear;
 this.length=length;
}
function push(element){
 this.dataStore[this.top++]=element;
}
function peek(){
 return this.dataStore[this.top-1];
}
function pop(){
 return this.dataStore[--this.top];
}
function clear(){
 this.top=0;
}
function length(){
 return this.top;
}

二、隊列

隊列是一種列表,隊列智能在隊尾插入元素,在隊首刪除元素。隊列用于存儲按順序排列的數(shù)據(jù),先進先出。

對隊列的操作

隊列主要兩種操作,入隊和出隊,入隊是在隊尾插入新元素,出隊是刪除隊首的元素。另一種是讀取隊頭的元素,peek();

push()在數(shù)組末尾添加元素

names=[];
names.push("hling");
names.push("aling");
print(names); //顯示hling,aling

shift()刪除數(shù)組中第一個元素

names.shift();
print(names); //顯示aling

定義Queue

function Queue(){
 this.dataStore=[];
 this.enqueue=enqueue;
 this.dequeue=dequeue;
 this.front=front;
 this.back=back;
 this.toString=toString;
 this.empty=empty;
}

enqueue()向隊尾添加一個元素

function enqueue(element){
 this.dataStore.push(element);
}

dequeue()向隊尾添加一個元素

function dequeue(element){
 return this.dataStore.shift(element);
}

讀取隊首和隊尾的元素

function front(){
 return this.dataStore[0];
}
function back(){
 return this.dataStore[this.dataStore.length-1];
}

toString()顯示隊列內(nèi)的所有元素

function toString(){
 var retStr="";
 for(var i=0;i<this.dataStore.length;i++){
  retStr+=this.dataStore[i]+"\n";
 }
 return retStr;

empty()方法盤對隊列是否為空

function empty(){
 if(this.dataStore.length==0){
  return true;
 }else{
  return false;
 }
}

**Queue隊列的類

function Queue(){
 this.dataStore=[];
 this.enqueue=enqueue;
 this.dequeue=dequeue;
 this.front=front;
 this.back=back;
 this.toString=toString;
 this.empty=empty;
}
function enqueue(element){
 this.dataStore.push(element);
}
function dequeue(element){
 return this.dataStore.shift(element);
}
function front(){
 return this.dataStore[0];
}
function back(){
 return this.dataStore[this.dataStore.length-1];
}
function toString(){
 var retStr="";
 for(var i=0;i<this.dataStore.length;i++){
  retStr+=this.dataStore[i]+"\n";
 }
return retStr;
function empty(){
 if(this.dataStore.length==0){
  return true;
 }else{
  return false;
 }
}

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

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

相關(guān)文章

  • 用于CSS代碼壓縮與格式化的javascript函數(shù)代碼

    用于CSS代碼壓縮與格式化的javascript函數(shù)代碼

    呵呵,發(fā)現(xiàn)只要幾行JS代碼就可實現(xiàn)css的壓縮與格式化,非常不錯。
    2009-12-12
  • javascript實現(xiàn)生成并下載txt文件方式

    javascript實現(xiàn)生成并下載txt文件方式

    這篇文章主要介紹了javascript實現(xiàn)生成并下載txt文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 單擊某一段文字改寫文本顏色

    單擊某一段文字改寫文本顏色

    單擊某一段文字,改文字變?yōu)榧t色,再次單擊之后,文字又變回黑色,示例如下,需要的朋友可以參考下
    2014-06-06
  • js實現(xiàn)隨機點名系統(tǒng)(實例講解)

    js實現(xiàn)隨機點名系統(tǒng)(實例講解)

    下面小編就為大家?guī)硪黄猨s實現(xiàn)隨機點名系統(tǒng)(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • JavaScript實現(xiàn)命名空間的多種方式

    JavaScript實現(xiàn)命名空間的多種方式

    隨著項目規(guī)模的不斷擴大,如何有效地組織和管理代碼成為一個重要的課題,命名空間是解決這一問題的有效手段之一,它可以幫助我們避免全局變量污染,減少變量名沖突的問題,從而提高代碼的可維護性和模塊化程度,本文介紹了JavaScript實現(xiàn)命名空間的多種方式
    2024-11-11
  • javascript中json對象json數(shù)組json字符串互轉(zhuǎn)及取值方法

    javascript中json對象json數(shù)組json字符串互轉(zhuǎn)及取值方法

    這篇文章主要介紹了javascript中json對象json數(shù)組json字符串互轉(zhuǎn)及取值方法,需要的朋友可以參考下
    2017-04-04
  • xml和web特殊字符

    xml和web特殊字符

    在html和xml文件中,往往會因為以下特殊字符而導(dǎo)致文件解析出錯,一般通過以下函數(shù)來處理。
    2009-04-04
  • momentjs使用詳細說明

    momentjs使用詳細說明

    這篇文章主要介紹了momentjs詳細使用說明,使用 Moment.js 可以輕松地獲取上周、上月和前三個月的起始和結(jié)束時間,在示例中,我們傳入了 '2023-07-15',并將返回的日期信息存儲在 dateInfo 變量中,然后將其打印到控制臺上,需要的朋友可以參考下
    2023-07-07
  • ES6中的WeakMap和WeakSet特性和用途詳解

    ES6中的WeakMap和WeakSet特性和用途詳解

    在JavaScript的ES6版本中,引入了WeakMap和WeakSet這兩種新的數(shù)據(jù)結(jié)構(gòu),與Map和Set相比,它們有一些特殊的特點和用途,使它們在處理內(nèi)存泄漏問題、管理對象私有數(shù)據(jù)、處理對象的唯一性等場景中有顯著的優(yōu)勢,本文將深入探討WeakMap和WeakSet的特性和用途,一起看看吧
    2023-12-12
  • 基于jquery實現(xiàn)的省市區(qū)級聯(lián)無ajax

    基于jquery實現(xiàn)的省市區(qū)級聯(lián)無ajax

    省市區(qū)級聯(lián)的實現(xiàn)方法有很多,在本文為大家介紹下如何使用jquery無ajax來實現(xiàn),感興趣的朋友可以參考下,希望對大家有所幫助
    2013-09-09

最新評論

静海县| 天台县| 通江县| 句容市| 三亚市| 黄陵县| 屏东市| 大荔县| 开平市| 樟树市| 桦川县| 化德县| 石阡县| 金寨县| 海伦市| 富民县| 秭归县| 北京市| 尚志市| 璧山县| 阿尔山市| 河间市| 砚山县| 上栗县| 应用必备| 青岛市| 海晏县| 建阳市| 合作市| 林州市| 邵阳县| 贵港市| 保山市| 满洲里市| 天门市| 开平市| 修武县| 吴川市| 福建省| 桦甸市| 任丘市|