以下是我用java实现数据结构中的栈
package com.husiwang.Stack; /** * Created by SiwangHu on 2015/2/2. */ public class Stack { private Object[] Data; //数据缓冲区 private int Capacity; //容量 private int Top; //栈顶指针 //无参构造函数 public Stack(){ Capacity=20; Top=0; Data=new Object[Capacity]; } //有参构造函数 public Stack(int capacity){ if(capacity>0) { Capacity = capacity; Top = 0; Data = new Object[Capacity]; } else{ throw new RuntimeException("容量必须大于0"); } } //获取容量 public int getCapacity() { return Capacity; } //获取栈顶指针位置 public int getTop() { return Top; } //获取长度 public int Length(){ return Top; } //判断是否为空 public boolean IsEmpty(){ if(Top==0) return true; else return false; } //扩充容量 public void IncreaseCapacity() { Object[] temp=new Object[Capacity]; for(int i=0;i<Capacity;i++){ temp[i] = Data[i]; } Capacity=Capacity*2; Data=new Object[Capacity]; for(int i=0;i<temp.length;i++){ Data[i]=temp[i]; } } //扩充容量 public void IncreaseCapacity(int multiple) { Object[] temp=new Object[Capacity]; for(int i=0;i<Capacity;i++){ temp[i] = Data[i]; } Capacity=Capacity*multiple; Data=new Object[Capacity]; for(int i=0;i<temp.length;i++){ Data[i]=temp[i]; } } //入栈 public void Push(Object data){ if(Top<Capacity){ Data[Top]=data; Top++; } else{ IncreaseCapacity(); Data[Top]=data; Top++; } } //出栈 public Object Pop(){ if(!IsEmpty()) { Object temp = Data[Top - 1]; Top--; return temp; } else{ throw new RuntimeException("栈为空"); } } //获取栈顶元素 public Object Peek(){ if(!IsEmpty()) { return Data[Top-1]; } else{ throw new RuntimeException("栈为空"); } } @Override public String toString() { String temp=""; for(int i=0;i<Top;i++){ temp+=Data[i]+" "; } return "Stack{" + "Data=" + temp + ", Capacity=" + Capacity + ", Top=" + Top + '}'; } }