一、 思路
- 栈的操作原则:先入后出
- 根据栈的操作原则,让每一次进入的成员指向前一个进入的成员
- 定义一个栈顶指针top以及栈底指针head,每添加一个成员栈顶指针向上移动
- 遍历栈中成员时,定义一个辅助指针,让其向下移动
- 当栈顶指针等于栈底指针时,栈中无数据
二、示例代码
- 栈中成员类【StackNode.java】
public class StackNode { private int data; private StackNode next; public StackNode(int data) { this.data = data; } public int getData() { return data; } public void setData(int data) { this.data = data; } public StackNode getNext() { return next; } public void setNext(StackNode next) { this.next = next; } }
- 栈顶与栈底指针的定义
// 栈底元素 private final StackNode header = new StackNode(-1); // 栈顶元素 private StackNode top = header;
- 向栈中添加数据
// 入栈 public void push(StackNode node) { node.setNext(top); top = node; }
- 移除栈中的数据
// 出栈 public int pop() { if (header == top) throw new RuntimeException("栈是空的哦!!!"); int data = top.getData(); top = top.getNext(); return data; }
- 遍历栈中的数据
// 遍历栈中的数据 public void showStack() { if (header == top) throw new RuntimeException("栈是空的哦!!!"); StackNode temp = top; while (header != temp) { System.out.println("栈中元素: " + temp.getData()); temp = temp.getNext(); } }