一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - java數(shù)據(jù)結(jié)構(gòu)之java實(shí)現(xiàn)棧

java數(shù)據(jù)結(jié)構(gòu)之java實(shí)現(xiàn)棧

2019-11-15 14:36java教程網(wǎng) JAVA教程

這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)棧,需要的朋友可以參考下

代碼如下:

import java.util.Arrays;

 

/**
 * 的實(shí)現(xiàn)<br>
 * @author Skip
 * @version 1.0
 */
public class Stack<T> {
 private int size;    //棧中元素的個(gè)數(shù)
 private Object[] arr;  //底層數(shù)組
 private final int defaultLength = 200; //默認(rèn)長(zhǎng)度

 /**
  * 無(wú)參構(gòu)造,使用默認(rèn)長(zhǎng)度初始化數(shù)組
  */
 public Stack(){
  arr = new Object[defaultLength];
  size = 0;
 }

 /**
  * 使用長(zhǎng)度參數(shù)初始化數(shù)組
  * @param length 長(zhǎng)度
  */
 public Stack(int length){
  arr = new Object[length];
  size = 0;
 }

 /**
  * 入棧
  * @param element 數(shù)據(jù)
  */
 public void push(T element){
  //是否需要擴(kuò)容
  if(size >= arr.length){
   //數(shù)組擴(kuò)容
   extendCapacity(size+1);
  }
  arr[size++] = element;
 }

 /**
  * 出棧
  * @return 數(shù)據(jù)
  */
 @SuppressWarnings("unchecked")
 public T pop(){
  //元素個(gè)數(shù)為0,無(wú)法執(zhí)行出棧操作
  if(size==0){
   return null;
  }
  T t = (T)arr[size-1];
  arr[--size] = null;  //數(shù)據(jù)已出棧,還原為null
  return t;
 }

 /**
  * 清空棧
  */
 public void clear(){
  for(int i=0;i<size;i++){
   arr[i]=null;
  }
  size = 0;
 }

 /**
  * 獲得當(dāng)前棧中元素的個(gè)數(shù)
  * @return 元素的個(gè)數(shù)
  */
 public int getSize(){
  return size;
 }

 /**
  * 判斷是否為空棧
  * @return 空為true,非空為false
  */
 public boolean isEmpty(){
  return size == 0;
 }

 /**
  * 打印棧中所有的元素
  */
 @SuppressWarnings("unchecked")
 public void printStack(){
  for(int i=0;i<size;i++){
   System.out.print(((T)arr[i]).toString());
  }
  System.out.println();
 }

 /**
  * 擴(kuò)容
  * @param length 需要的長(zhǎng)度
  */
 private void extendCapacity(int length){
  //當(dāng)前數(shù)組長(zhǎng)度和需要的長(zhǎng)度取最大
  int minCapacity = Math.max(arr.length, length);
  //判斷是否需要擴(kuò)容
  if(minCapacity - arr.length>0){
   //數(shù)組長(zhǎng)度增加一半
   int newLength = arr.length + arr.length/2;
   //如果新的長(zhǎng)度還比需求要小,將需求的長(zhǎng)度作為數(shù)組長(zhǎng)度
   if(newLength < minCapacity){
    newLength=minCapacity;
   }
   //數(shù)組長(zhǎng)度不能超過(guò)Integer.Max_Value
   if(newLength > Integer.MAX_VALUE - 8){
    newLength = Integer.MAX_VALUE;
   }
   //數(shù)組擴(kuò)容
   arr = Arrays.copyOf(arr, newLength);
  }
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品97福利在线 | 黑人性xxxⅹxxbbbbb | 无码人妻丰满熟妇啪啪网不卡 | 欧美人交性视频在线香蕉 | 日韩综合久久 | 91亚洲一区二区在线观看不卡 | 国产成人精品高清不卡在线 | 亚洲精品卡一卡2卡3卡4卡 | 歪歪漫画a漫入口 | 学校捏奶揉下面污文h | 四虎影院地址 | 国产农村乱子伦精品视频 | chinese国产老太性 | 男人天堂网www | 曹逼网站| 国产精品久久久久jk制服 | 欧美在线观看视频一区 | 欧美精品色精品一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 日本黄色影院 | m3u8久久国产精品影院 | 91麻豆国产精品91久久久 | 99视频精品免费99在线 | 色综合国产 | 九九热视频免费 | 成人免费观看在线视频 | 日韩一级片在线播放 | 国产美女亚洲精品久久久久久 | 国产91精品露脸国语对白 | 三极片在线观看 | 牛牛影院成人免费网页 | 男神插曲女生动漫完整版动漫 | 亚洲黄色大片 | 女人把私密部位张开让男人桶 | 369手机看片 | 欧美理论片手机在线观看片免费 | 69热精品视频在线看影院 | 91视频国产自拍 | 成人高辣h视频一区二区在线观看 | 欧美一级视频在线 | 国产麻豆91欧美一区二区 |