本文實例講述了javascript編程實現(xiàn)棧的方法。分享給大家供大家參考,具體如下:
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),棗莊企業(yè)網(wǎng)站建設(shè),棗莊品牌網(wǎng)站建設(shè),網(wǎng)站定制,棗莊網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,棗莊網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
棧是限定僅在表尾進(jìn)行插入或刪除操作的線性表,棧是先進(jìn)后出的。棧的表尾稱為棧頂(top),而表頭端稱為棧底(bottom)。
和線性表類似,棧也有兩種存儲表示方法,順序棧和鏈棧。
這里講一下順序棧,設(shè)置指針top指示棧頂元素在順序棧中的位置。通常的做法就是以top=0表示空棧。base為棧底指針,top為棧頂指針。
如果base為null,則表示棧結(jié)構(gòu)不存在,如果top=base則表示空棧。每當(dāng)插入一個新的元素,top+1,刪除元素,top-1。因此,非空棧中top始終在棧頂元素的下一位置上。
如下圖所示
JavaScript中自帶了數(shù)組的push和pop方法,其原理無非就是數(shù)組最后繼續(xù)添加和刪除數(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é)運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
本文標(biāo)題:javascript編程實現(xiàn)棧的方法詳解【經(jīng)典數(shù)據(jù)結(jié)構(gòu)】
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article34/igoise.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、響應(yīng)式網(wǎng)站、軟件開發(fā)、用戶體驗、企業(yè)建站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)