使用头结点记录栈顶位置,采取头插法入栈,出栈时删除头结点的Next节点即可
package 栈;
public class LinkListStackDemo {
public static void main(String[] args) {
LinkListStack linkListStack = new LinkListStack();
linkListStack.push(1);
linkListStack.push(2);
linkListStack.push(3);
System.out.println(linkListStack.pop());
System.out.println(linkListStack.pop());
System.out.println(linkListStack.pop());
System.out.println(linkListStack.peek());
System.out.println(linkListStack.isEmpty());
}
}
class LinkListStack {
private final LinkListStackNode headNode;
public LinkListStack() {
headNode = new LinkListStackNode(0, null);
}
public void push(int value) {
headNode.next = new LinkListStackNode(value, headNode.next);
}
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈空");
}
int value = headNode.next.value;
headNode.next = headNode.next.next;
return value;
}
public boolean isEmpty() {
return headNode.next == null;
}
public Integer peek() {
return headNode.next == null ? null : headNode.next.value;
}
}
class LinkListStackNode {
public int value;
public LinkListStackNode next;
public LinkListStackNode(int value, LinkListStackNode next) {
this.value = value;
this.next = next;
}
}



