免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
棧_JAVA實現(xiàn)
一、基本概念
  棧是一種數(shù)據(jù)結(jié)構(gòu),是只能在某一端插入和刪除的特殊線性表。它按照后進先出的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)(最后一個數(shù)據(jù)被第一個讀出來)。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數(shù)為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為先進后出表。
  ??梢杂脕碓诤瘮?shù)調(diào)用的時候存儲斷點,做遞歸時要用到棧!
  
  


二、基本算法
  1、進棧(PUSH)算法
  ①若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出;不滿則作②);
 ?、谥肨OP=TOP+1(棧指針加1,指向進棧地址);
 ?、跾(TOP)=X,結(jié)束(X為新進棧的元素);
  2、退棧(POP)算法
 ?、偃鬞OP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);
 ?、赬=S(TOP),(退棧后的元素賦給X):
 ?、跿OP=TOP-1,結(jié)束(棧指針減1,指向棧頂)。
三、棧的實現(xiàn)
  棧分順序棧和鏈?zhǔn)綏?,下面程序介紹了順序棧的實現(xiàn)。

 

java棧的實現(xiàn)

 

public class MyStack {  //定義一個堆棧類
 
 int[] array;             //用int數(shù)組來保存數(shù)據(jù),根據(jù)需要可以換類型
 int s_size;              //定義堆棧的寬度
 
 public MyStack(int i){    //定義一個帶參數(shù)構(gòu)造器
  array=new int[i];         //動態(tài)定義數(shù)組的長度
  s_size=0;                     //堆棧的默認(rèn)寬度為0
 }
 
 public MyStack(){          //默認(rèn)構(gòu)造器
  this(50);                     //默認(rèn)構(gòu)造器可容納50個元素
 }
 
 public void push(int i){ //壓棧
  array[this.s_size]=i;
  this.s_size++;
 }
 
 public int pop(){     //從堆棧中取元素,從棧頂開始取
  if(this.s_size!=0){
   int t=array[s_size-1];        //用中間變量保存棧頂?shù)脑?br>   array[s_size-1]=0;              //取完元素該位置設(shè)為0
   s_size--;                            //棧的大小減1
   return t;                             //返回棧頂元素
  }else{
   System.out.println("This stack is empty");    //當(dāng)棧為空時顯示提示信息,返回0
   return 0;
  }
 }
 
 public boolean isEmpty(){                   //判斷棧是否為空
  return this.s_size==0;
 }
 
 public int top(){                                 //從棧頂取值,功能和 pop() 方法一樣
  if(!this.isEmpty()){
   int t=array[this.s_size-1];
   array[this.s_size-1]=0;
   this.s_size--;
   return t;
  }else{
   System.out.println("This stack is empty!");
   return 0;
  }
 }
 
 public void printAll(){                 //打印出堆棧中的所有元素的值,不是取出,元素依然在堆棧里
  if(!this.isEmpty()){
   for(int i=this.s_size - 1;i>=0;i--){
    System.out.println(array[i]);
   }
  }
 }
 
 
 //下面是測試代碼
 public static void main(String[] args){
  MyStack stack=new MyStack();
  stack.push(4);
  stack.push(5);
  stack.push(6);
  stack.push(7);
  //System.out.println(stack.isEmpty());
  stack.printAll();
  System.out.println("===========");
  System.out.println(stack.top());
  System.out.println(stack.top());
  System.out.println(stack.top());
  System.out.println(stack.top());
  System.out.println(stack.top());
 }

}


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
帶你認(rèn)識Java數(shù)據(jù)結(jié)構(gòu)中的棧和隊列(手把手教你實現(xiàn)自己的棧和隊列)
用JAVA實現(xiàn)堆棧(數(shù)組篇)
用JAVA來編寫棧
Java提高篇(三一)-----Stack
Java開發(fā)基礎(chǔ)入門之Java基礎(chǔ)中的Stack類及其常用方法
詳解堆棧的幾種實現(xiàn)方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服