足球投注app栈的链式存储结构是通过链表来终了的-买球·(中国)投注APP官方网站
发布日期:2024-08-19 07:36 点击次数:160
栈(Stack)是一种谨守后进先出(LIFO, Last In First Out)原则的有序网络。栈的链式存储结构是通过链表来终了的,咱们称之为链栈。链栈比较规章栈(基于数组终了的栈)具有动态扩容的优点,无需追想栈溢出的问题,但可能会有更多的内存支拨(因为每个节点皆需要稀疏的指针来存储下一个节点的地址)。
链栈的基本结构
链栈的节点一般包含两个部分:数据域(存储数据)和指针域(存储指向下一个节点的指针)。链栈的顶部(栈顶)每每通过一个栈顶指针(top)来符号,栈顶指针指向链栈的终末一个元素(即最近入栈的元素)。
最初,咱们界说一个节点类Node,它包含数据域和指向下一个节点的指针(或援用):
class Node<T> { T data; // 节点存储的数据 Node<T> next; // 指向下一个节点的援用 // 构造要津 public Node(T data) { this.data = data; this.next = null; } }
然后,咱们界说链式栈类LinkedStack,它包含栈顶节点的援用和可能的要津,如push(入栈)、pop(出栈)、peek(检察栈顶元素)、isEmpty(查验栈是否为空)和size(赢得栈的大小):
public class LinkedStack<T> { private Node<T> top; // 栈顶节点 // 构造要津 public LinkedStack() { this.top = null; } // 入栈操作 public void push(T data) { Node<T> newNode = new Node<>(data); newNode.next = top; // 新节点指向蓝本的栈顶 top = newNode; // 更新栈顶为新节点 } // 出栈操作 public T pop() { if (isEmpty()) { throw new RuntimeException("Stack is empty"); } T data = top.data; // 暂存栈顶数据 top = top.next; // 更新栈顶为下一个节点 return data; // 复返栈顶数据 } // 检察栈顶元素 public T peek() { if (isEmpty()) { throw new RuntimeException("Stack is empty"); } return top.data; } // 查验栈是否为空 public boolean isEmpty() { return top == null; } // 赢得栈的大小 public int size() { int count = 0; Node<T> current = top; while (current != null) { count++; current = current.next; } return count; } // 可选:打印栈中扫数元素(从栈顶到栈底) public void printStack() { Node<T> current = top; while (current != null) { System.out.print(current.data + " "); current = current.next; } System.out.println(); } }
咫尺,咱们不错使用这个LinkedStack类来实施栈操作了。以下是一个圣洁的示例:
话剧巴士这辆移动话剧舞台自2023年2月14日上线以来,带给广大市民游客精彩的沉浸式移动话剧体验,在成都大大小小的街头中行驶了5000+公里,车内的欢声笑语在城市中留下了一道靓丽风景,这里既能观光,又能看剧,还有地道川味零食。
public class Main { public static void main(String[] args) { LinkedStack<Integer> stack = new LinkedStack<>(); stack.push(1); stack.push(2); stack.push(3); System.out.println("Stack size: " + stack.size()); // 输出:Stack size: 3 System.out.println("Stack top: " + stack.peek()); // 输出:Stack top: 3 stack.printStack(); // 输出:3 2 1 while (!stack.isEmpty()) { System.out.println(stack.pop()); // 轮番输出:3 2 1 } System.out.println("Stack size after popping: " + stack.size()); // 输出:Stack size after popping: 0 } }足球投注app