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

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

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

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

一、棧的介紹

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

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

對棧的操作

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

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

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

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

對棧的實(shí)現(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;
}

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

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

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

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

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

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

如果對一個(gè)空棧調(diào)用peek()方法,結(jié)果為undefined,因?yàn)闂J强盏?,棧頂沒有任何元素。

實(shí)現(xiàn)length()

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

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

實(shí)現(xiàn)clear()

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

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;
}

二、隊(duì)列

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

對隊(duì)列的操作

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

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

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

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

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()向隊(duì)尾添加一個(gè)元素

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

dequeue()向隊(duì)尾添加一個(gè)元素

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

讀取隊(duì)首和隊(duì)尾的元素

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

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

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

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

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

**Queue隊(duì)列的類

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é)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

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

相關(guān)文章

  • 用javascript實(shí)現(xiàn)li 列表數(shù)據(jù)隔行變換背景顏色

    用javascript實(shí)現(xiàn)li 列表數(shù)據(jù)隔行變換背景顏色

    客戶端效果,效率自然不錯(cuò)。以前的做法是偶數(shù)行時(shí)給li加一個(gè)class,方法當(dāng)然不可取,如果后臺讀取再加class就很麻煩了,看看這個(gè)效果
    2007-08-08
  • js漢字轉(zhuǎn)拼音實(shí)現(xiàn)代碼

    js漢字轉(zhuǎn)拼音實(shí)現(xiàn)代碼

    漢字轉(zhuǎn)拼音,比較娛樂的一款應(yīng)用,感興趣的朋友可以了解下,或許對你學(xué)習(xí)js有所幫助
    2013-02-02
  • 如何安裝控制器JavaScript生成插件詳解

    如何安裝控制器JavaScript生成插件詳解

    這篇文章主要給大家介紹了關(guān)于如何安裝控制器JavaScript生成插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Javascript判斷圖片尺寸大小實(shí)例分析

    Javascript判斷圖片尺寸大小實(shí)例分析

    通常我們判斷js圖片大小都是利用images對象,然后再用attr來獲取圖片地址再進(jìn)行判斷就可以了。這篇文章主要介紹了Javascript判斷圖片尺寸大小的實(shí)例,需要的朋友可以參考下
    2014-06-06
  • js實(shí)現(xiàn)文本上下來回滾動(dòng)

    js實(shí)現(xiàn)文本上下來回滾動(dòng)

    本文主要分享了js實(shí)現(xiàn)文本上下來回滾動(dòng)的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • js數(shù)組去重常見的方法匯總(7種)

    js數(shù)組去重常見的方法匯總(7種)

    我們做項(xiàng)目的時(shí)候往往會(huì)需要把數(shù)組里面一些重復(fù)的項(xiàng)去掉,下面這篇文章主要給大家介紹了關(guān)于js數(shù)組去重常見的7種方法匯總,對每種方法都進(jìn)行了總結(jié),需要的朋友可以參考下
    2022-08-08
  • JS實(shí)現(xiàn)漂亮的窗口拖拽效果(可改變大小、最大化、最小化、關(guān)閉)

    JS實(shí)現(xiàn)漂亮的窗口拖拽效果(可改變大小、最大化、最小化、關(guān)閉)

    這篇文章主要介紹了JS實(shí)現(xiàn)漂亮的窗口拖拽效果,具有可改變大小、最大化、最小化、關(guān)閉等功能,以完整實(shí)例形式較為詳細(xì)的分析了JavaScript操作窗口的大小改變、還原及關(guān)閉等功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-10-10
  • 5 cool javascript apps

    5 cool javascript apps

    5 cool javascript apps...
    2007-03-03
  • JavaScript時(shí)間轉(zhuǎn)換處理函數(shù)

    JavaScript時(shí)間轉(zhuǎn)換處理函數(shù)

    這篇文章主要介紹了JavaScript時(shí)間轉(zhuǎn)換處理函數(shù)的方法的相關(guān)資料,需要的朋友可以參考下
    2015-04-04
  • clipboard.js在移動(dòng)端復(fù)制失敗的解決方法

    clipboard.js在移動(dòng)端復(fù)制失敗的解決方法

    最近在使用clipboard.js碰到的一個(gè)小問題,通過查找相關(guān)資料解決了,所以下面這篇文章主要給大家介紹了關(guān)于clipboard.js在移動(dòng)端復(fù)制失敗的解決方法,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評論