栈的定义:
栈(Stack)是限制仅在一端进行插入和删除运算的线性表。
通常称插入和删除的这一端为栈顶,另一端为栈底。
当表中没有元素时称为空栈。
"栈"也被称为"后进先出"的容器。同其他Java容器一样,压进去与弹出来的东西都是Object,所以除非你只用Object的功能,否则就必须对弹出来的东西进行类型转换。
LinkedList的方法能直接实现栈的功能,所以你完全可以不写stack而直接使用LinkedList。
LinkedList的方法能直接实现栈的功能,所以你完全可以不写stack而直接使用LinkedList。
import java.util.LinkedList;
public class MyStack
{
private LinkedList list = new LinkedList();
public int StackLength()//返回栈的长度
{
return list.size();
}
public boolean StackEmpty()//判断栈是否为空
{
return list.isEmpty();
}
public void push(Object o)//进栈
{
list.addFirst(o);
}
public Object pop()//出栈
{
if(!list.isEmpty())
{
return list.remove();
}
return "栈内无元素";
}
public Object peek()//显示栈头元素
{
return list.getFirst();
}
public void clear()//清除栈
{
list.clear();
}
public static void main(String[] args)//栈MyStack测试
{
MyStack stack = new MyStack();
System.out.println(stack.StackEmpty());
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
stack.push("e");
stack.push("f");
System.out.println(stack.StackLength());
System.out.println(stack.peek());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.peek());
stack.clear();
stack.push("t");
stack.push("s");
System.out.println(stack.pop());
System.out.println(stack.StackLength());
System.out.println(stack.peek());
}
}
结果
true
6
f
f
e
d
s
1
t
6
f
f
e
d
s
1
t