堆栈是一种后进先出的数据结构,主要需要实现的方法有两个,一个是压栈的操作PUSH,另一个是出栈的操作POP
很容易联想到可以通过数组这样的一个数据结构来实现堆栈
假设插入的顺序是1234567
(初始状态)
(插入后的状态,此时指针由右往左,顺序就是7654321,这样就实现先进后出的一个效果)
下面给出相关的代码:
package aa;
import java.util.HashMap;
public class Stack {
/**
* @param args
*/
Object[] data;
int maxSize;
int top;
public Stack(int maxSize) {
super();
this.maxSize = maxSize;
data=new Object[maxSize];
top=-1;
}
//获取堆栈的大小
public int getMaxSize() {
return maxSize;
}
//获取堆栈中元素的个数
public int getTop() {
return top;
}
public boolean isEmpty(){
return top==-1;
}
public boolean isFull(){
return top+1==maxSize;
}
//压栈
public boolean Push(Object data){
if(isFull())
{
System.out.println("堆栈已满!");
return false;
}
this.data[++top]=data;
return true;
}
//出栈
public Object Pop(){
if(isEmpty()){
try {
throw new Exception("栈已空!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return this.data[top--];
}
//返回栈顶元素
public Object peek(){
return this.data[getTop()];
}
public static void main(String[] args){
Stack s=new Stack(10);
s.Push(1);
s.Push(2);
s.Push("lalala");
s.Push(12.35);
s.Push("di");
System.out.println(s.peek());
while(s.top>=0){
System.out.println(s.Pop());
}
}
}