/**
* @author*simonws
*/
public class StackNode< T> {
//要存储的信息
private T info;
public StackNode()
{
this(null);
}
public StackNode(T info)
{
this.info = info;
}
//set方法
public void set(T info)
{
this.info = info;
}
//get方法
public T get()
{
return info;
}
}
而后,是栈的实现了,这才是关键:
/**
* @author*simonws
*
*/
public class Stack< T> {
//储存数据的栈
private StackNode< T> stack[];
//栈的最大容量
private int maxSize;
//栈的当前容量
private int size;
//不传参数,默认栈的最大容量为100
public Stack()
{
this.maxSize = 100; this
}
public Stack(int maxSize)
{
//若是传入的参数小于或等于0,则设置最大容量为100
if(maxSize <= 0)
maxSize = 100;
this.maxSize = maxSize;
}
//初始化栈,在堆中先申请好内存空间
public void initStack()
{
stack = new StackNode[maxSize];
//栈的当前大小为0
size = 0;
}
//栈的基本方法之一,得到栈顶元素
public StackNode< T> getTop()
{
//栈中没有元素,则返回空
if(size == 0)
return null;
return stack[size-1];
}
//栈的基本方法之一,入栈
public boolean push(StackNode< T> stackNode)
{
//栈已满,入栈失败
if(size >= maxSize)
return false;
size++;
stack[size] = stackNode;
return true;
}
//栈的基本方法之一,出栈
public StackNode< T> pop()
{
//若是栈已空,则返回null
if(size <= 0)
return null; 内存
StackNode< T> pop = stack[size-1];get
stack[size-1] = null;
size--; it
return pop ;
}
//栈是否为空
public boolean isEmpty()
{
if(size <= 0)
return true;
return false;
}
//栈的基本方法之一,遍历栈
public void traverse()
{
for(int i = 0; i < size; i++)
{
System.out.println(stack[i].get());
}
}
public static void main(String []agrs)
{
Stack< String> stack = new Stack< String>();
stack.initStack();
stack.push(new StackNode< String>("Anybody1"));
stack.push(new StackNode< String>("Anybody2"));
stack.push(new StackNode< String>("Anybody3"));
stack.traverse();
}
}
class