栈和队列应用

发布时间:2026/7/30 18:34:19
栈和队列应用 一、栈1.限制线性表数组链表的插入和删除插入删除在同一端进行不考虑查找只考虑插入删除用栈2.先进后出package com.qcby.db; public class Stack { private int[] arr new int[5]; private int top -1; //栈满顶端底 public boolean isFull() { return toparr.length-1; } //栈空 public boolean isEmpty() { return top-1; } //入栈 public void push(int num) { if(isFull()) { System.out.println(栈满); return; } top; arr[top]num; } //出栈 public int pop() { if(isEmpty()) { System.out.println(栈空); throw new RuntimeException(栈空); } int res arr[top]; top--; return res; } }二、队列先进先出插入只能队尾删除只能队头用数组实现的一个简单顺序队列非循环队列。规则1. 数组长度固定为 5最多只能存 5 个元素。2. front 始终指向“上一次出队”的位置rear 始终指向“当前最后一个元素”的位置。3. 初始时 front rear -1表示队列为空。4. 入队时 rear 加 1出队时 front 加 1当 rear 到达数组末尾即认为“队满”。5. 出队后被弹出的位置上的值仍在数组里但逻辑上已不属于队列。package com.qcby.db; public class Queue { /* 固定容量的数组实际存储数据 */ private int[] arr new int[5]; /* front上一次出队的位置初始 -1表示队列空 */ private int front -1; /* rear当前最后一个元素的位置初始 -1表示队列空 */ private int rear -1; /** * 判断队列是否已满。 * 当 rear 指向数组最后一个下标时无论 front 在哪都认为不能再入队。 * return true 表示已满false 表示未满 */ public boolean isFull() { // 数组下标从 0 开始最大下标是 length-1 return rear arr.length - 1; } /** * 判断队列是否为空。 * 初始时 front rear -1为空 * 每出队一次 front当 front 追上 rear 时也为空。 * return true 表示队列为空false 表示非空 */ public boolean isEmpty() { return rear front; } /** * 入队add。 * 将 value 放在 rear 的下一个位置然后 rear 后移。 * 如果队列已满直接提示并返回不抛异常。 * param value 要入队的元素 */ public void add(int value) { if (isFull()) { System.out.println(队满); return; // 不再继续添加 } rear; // 后移 rear arr[rear] value; // 放入新元素 } /** * 出队remove。 * 将 front 后移一位返回该位置的值。 * 如果队列为空抛出运行时异常提醒调用者。 * return 被移除的元素 * throws RuntimeException 当队列为空时 */ public int remove() { if (isEmpty()) { throw new RuntimeException(队空); } front; // 前移 front return arr[front]; // 返回旧位置元素 } }