Java中的栈是一种常见的数据结构,主要用于实现后进先出(LIFO)的操作顺序,该结构有两种实现方式:顺序栈和链式栈。
顺序栈:
public class ArrayStack { private int top; // 栈顶位置 private int[] data; // 存储数据的数组 public ArrayStack(int size) { data = new int[size]; top = -1; } // 判断栈是否为空 public boolean isEmpty() { return top == -1; } // 判断栈是否已满 public boolean isFull() { return top == data.length - 1; } // 入栈 public void push(int value) { if (isFull()) { System.out.println("栈已满,无法入栈"); return; } data[++top] = value; } // 出栈 public int pop() { if (isEmpty()) { System.out.println("栈已空,无法出栈"); return -1; } return data[top--]; } }
链式栈:
public class LinkedStack { private Node top; // 栈顶节点 private class Node { int value; Node next; public Node(int value) { this.value = value; } } // 判断栈是否为空 public boolean isEmpty() { return top == null; } // 入栈 public void push(int value) { Node newNode = new Node(value); if (isEmpty()) { top = newNode; } else { newNode.next = top; top = newNode; } } // 出栈 public int pop() { if (isEmpty()) { System.out.println("栈已空,无法出栈"); return -1; } int value = top.value; top = top.next; return value; } }
以上就是Java中栈结构的两种实现方式:顺序栈和链式栈。两者在实现方式上有所不同,可以根据实际需求进行选择。