JAVA的栈和队列

### 的介绍 是一种后进先出(LIFO,Last In First Out)的数据结构,就像一叠盘子,最后放上去的盘子总是最先被拿走。在 Java 中,`Stack` 类实现了的功能。 ### 的使用方法 以下是的常用操作示例: ```java import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack<Integer> s = new Stack<>(); s.push(1); s.push(2); s.push(3); s.push(4); // 获取中有效元素个数 System.out.println(s.size()); // 获取顶元素 System.out.println(s.peek()); // 元素出 s.pop(); // 再次出并输出 System.out.println(s.pop()); if(s.empty()){ System.out.println("空"); } else { System.out.println(s.size()); } } } ``` 上述代码中,`push()` 方法用于将元素压入顶,`peek()` 方法用于获取顶元素,`pop()` 方法用于移除并返回顶元素,`empty()` 方法用于判断是否为空,`size()` 方法用于获取中元素的个数 [^3]。 ### 队列的介绍 队列是一种先进先出(FIFO,First In First Out)的数据结构,类似于排队,先到的人先接受服务。Java 中有 `Queue` 接口,但没有具体的实现类,通常使用 `LinkedList` 类来实现队列的功能,因为 `LinkedList` 是双向链表,可以方便地实现队列的所有功能 [^4]。 ### 队列的使用方法 以下是队列的常用操作示例: ```java import java.util.LinkedList; public class QueueExample { public static void main(String[] args) { LinkedList<Integer> queue = new LinkedList<>(); queue.offer(1); queue.offer(2); queue.offer(3); queue.offer(4); queue.offer(5); // 队列中数据元素个数 System.out.println(queue.size()); // 元素出队列 queue.poll(); // 获取队列的队首 Integer a = queue.peek(); System.out.println(a); if(queue.isEmpty()){ System.out.println("队列空"); } else { System.out.println(queue.size()); } } } ``` 上述代码中,`offer()` 方法用于将元素添加到队列尾部,`poll()` 方法用于移除并返回队列的队首元素,`peek()` 方法用于获取队列的队首元素,`isEmpty()` 方法用于判断队列是否为空,`size()` 方法用于获取队列中元素的个数 [^1]。 ### 自定义队列实现 还可以自定义队列的数据结构,示例如下: ```java public class OneQueue<E> { private Object[] data = null; private int maxSize = 0; private int front; private int rear; // 初始化容量为10 OneQueue() { data = new Object[10]; maxSize = 10; front = 0; rear = 0; } // 指定初始化容量 OneQueue(int initSize) { if (initSize >= 0) { data = new Object[initSize]; maxSize = initSize; front = rear = 0; } else { throw new RuntimeException("初始化大小不能小于0:" + initSize); } } // 入队 public boolean add(E e) { if (rear == maxSize) { throw new RuntimeException("队列已满,无法插入新的元素"); } else { data[rear++] = e; return true; } } // 出队 public E poll() { if (front == 0) { throw new RuntimeException("空队列无法出队!"); } E value = (E) data[front]; data[front++] = null; return value; } // 取队顶元素 public E peek() { if (front == 0) { throw new RuntimeException("空队列无法读取!"); } else { return (E) data[front]; } } } ``` 上述代码中,通过自定义 `OneQueue` 类实现了队列的基本功能,包括入队、出队获取队首元素等操作 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值