程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java數據構造之java完成棧

java數據構造之java完成棧

編輯:關於JAVA

java數據構造之java完成棧。本站提示廣大學習愛好者:(java數據構造之java完成棧)文章只能為提供參考,不一定能成為您想要的結果。以下是java數據構造之java完成棧正文



import java.util.Arrays;

/**
 * 棧的完成<br>
 * @author Skip
 * @version 1.0
 */
public class Stack<T> {
 private int size;    //棧中元素的個數
 private Object[] arr;  //底層數組
 private final int defaultLength = 200; //默許長度

 /**
  * 無參結構,應用默許長度初始化數組
  */
 public Stack(){
  arr = new Object[defaultLength];
  size = 0;
 }

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

 /**
  * 入棧
  * @param element 數據
  */
 public void push(T element){
  //能否須要擴容
  if(size >= arr.length){
   //數組擴容
   extendCapacity(size+1);
  }
  arr[size++] = element;
 }

 /**
  * 出棧
  * @return 數據
  */
 @SuppressWarnings("unchecked")
 public T pop(){
  //元素個數為0,沒法履行出棧操作
  if(size==0){
   return null;
  }
  T t = (T)arr[size-1];
  arr[--size] = null;  //數據已出棧,復原為null
  return t;
 }

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

 /**
  * 取得以後棧中元素的個數
  * @return 元素的個數
  */
 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();
 }

 /**
  * 擴容
  * @param length 須要的長度
  */
 private void extendCapacity(int length){
  //以後數組長度和須要的長度取最年夜
  int minCapacity = Math.max(arr.length, length);
  //斷定能否須要擴容
  if(minCapacity - arr.length>0){
   //數組長度增長一半
   int newLength = arr.length + arr.length/2;
   //假如新的長度還比需求要小,將需求的長度作為數組長度
   if(newLength < minCapacity){
    newLength=minCapacity;
   }
   //數組長度不克不及跨越Integer.Max_Value
   if(newLength > Integer.MAX_VALUE - 8){
    newLength = Integer.MAX_VALUE;
   }
   //數組擴容
   arr = Arrays.copyOf(arr, newLength);
  }
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved