日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

棧_JAVA實(shí)現(xiàn)

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


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

 

java棧的實(shí)現(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ǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多