/*
* Author: Eric Zhang
* Created: 20074る11ら と 01:09:25
* Modified: 20074る11ら と 01:09:25
* For LIFO
*/
import java.util.*;
public class LinkedListStack {
private static class Node {
Object o;
Node next;
}
private Node top = null;
public boolean imEmpty() {
return top == null;
}
public Object peek() {
if (top == null)
throw new EmptyStackException();
return top.o;
}
public void push(Object o) {
Node temp = new Node();
temp.o = o;
temp.next = top;
top = temp;
//return o;
}
public Object pop() {
if (top == null)
throw new EmptyStackException();
Object o = top.o;
top = top.next;
return o;
}
public static void main(String args[]) {
LinkedListStack o = new LinkedListStack();
o.push("aa");
o.push("bb");
System.out.println(o.pop());
o.push("cc");
System.out.println(o.pop());
System.out.println(o.pop());
}
} LinkedListStack表明栈由一个私有的顶层嵌套类Node和一个私有引用变量top构成,引用变量top初始化为null表示一个空栈。相对于一维数组实现的栈,LinkedListStack并不需要一个构造器,因为它能够随着数据项的压入动态扩展。这样,void push(Object o)就不需要抛出FullStackException对象。然而,Object pop()还是需要检查栈是否为空的,这可能会导致可抛的EmptyStackException对象。
Java LinkedList栈实现

本文介绍了一种使用Java的LinkedList来实现栈的数据结构方法。通过一个私有的内部类Node和一个引用变量top,创建了一个可以动态扩展的栈。文章详细解释了如何进行push、pop和peek等操作。

3497

被折叠的 条评论
为什么被折叠?



