堆栈:
栈又称堆栈,是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。
把对栈进行运算的一端称为栈顶,另一端称为栈底。
向一个栈插入新元素称为入栈或进栈 从一个栈删除元素称为退栈或出栈因为后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out, LIFO)。
堆栈定义:
public class StackOne<T>
{
private T[] data;
private int top=-1;
//无参构造函数
public StackOne()
{
this.data=(T[])new Object[10];
this.top=-1;
}
//带参构造函数
public StackOne(int size)
{
this.data=(T[])new Object[size];
this.top=-1;
}
public boolean push(T m)
{
if(top==data.length-1) return false;
top=top+1;
data[top]=m;
return true;
}
public T pop()
{
if(top==-1) return null;
T m=data[top];
top=top-1;
return m;
}
public boolean isFull()
{
return top==data.length-1;
}
public boolean isEmepty()
{
return top==-1;
}
}
测试:
public class StackOneTest {
public static void main(String[] args)
{
StackOne<Character> charStack=new StackOne<Character>(26*2);
for(int i=26;!charStack.isFull();i--)//一直压栈直到栈满
{
//堆栈先进后出,小写字母排在大写字母后面,应先进栈
charStack.push((char)(i+'z'-26));
//大写字母进栈
charStack.push((char)(i+'Z'-26));
}
//全部出栈
System.out.println("英文字母表:");
for(int i=1;!charStack.isEmepty();i++)
{
System.out.print(charStack.pop()+" ");
System.out.print(charStack.pop()+" ");
if(i%7==0) System.out.println();
}
}
}
结果: