堆栈(Stack)是一个比较普通,而又特别的数据结构。合理利用它的先进后出(FILO),有时候会有一些比较好的作用。这里面不多讲的它的应用,而是举一个很简单的例子来表明它的FILO特性,并用数组来实现一个堆栈算法。
请看代码:
import java.util.*;
public class TestStack{
public static void main(String args[]){
Stack<String> stack = new Stack<String>();
for(int i=0; i<10; i++)
stack.push("Stack"+ i);
while(!stack.isEmpty())
System.out.println(stack.pop());
}
}
结果我就不打印了,从上面的例子中,我们可以看出Stack类的一些典型方法,比如push,pop和isEmpty方法。下面就利用数组来实现一个Stack算法:
class StackOverflowException extends Exception{
public StackOverflowException(){
}
}
class StackEmptyException extends Exception{
public StackEmptyException(){
}
}
public class StackClass {
private int stackSize;
private int stackTop;
private String[] array;
public StackClass(){
System.out.println("The current Stack capacity is 100.");
stackSize = 100;
stackTop = 0;
array = new String[stackSize];
}
public StackClass(int size){
if (size <= 0){
System.out.println("The current Stack capacity is 100.");
stackSize = 100;
}
stackSize = size;
stackTop = 0;
array = new String[stackSize];
}
public boolean isFullStack(){
return stackSize == stackTop;
}
public boolean isEmptyStack(){
return stackTop == 0;
}
public void push(String str) throws StackOverflowException{
if (isFullStack())
throw new StackOverflowException();
array[stackTop] = str;
stackTop ++;
}
public String pop() throws StackEmptyException{
if (isEmptyStack())
throw new StackEmptyException();
stackTop --;
return array[stackTop];
}
public static void main(String args[]){
StackClass stack = new StackClass();
try{
stack.push("a");
stack.push("aa");
stack.push("aaa");
}
catch(StackOverflowException e){
e.printStackTrace();
}
try{
while (!stack.isEmptyStack())
System.out.println(stack.pop());
}
catch(StackEmptyException e){
e.printStackTrace();
}
}
}
输出结果是:
The current Stack capacity is 100.
aaa
aa
a
当然这个堆栈的实现还是有许多不足的地方,比如只能存储字符串型的元素,关于它的完善将在以后进行。大家先只是看看想想吧...^_^...
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/