用基本的数据结构实现一个队列,提供pop和push方法 java
时间: 2023-05-13 14:06:26 浏览: 118
好的,以下是用基本的数据结构实现一个队列的 Java 代码,其中包括 pop 和 push 方法:
```
public class Queue {
private int[] arr;
private int front;
private int rear;
private int size;
public Queue(int size) {
arr = new int[size];
front = 0;
rear = -1;
this.size = 0;
}
public void push(int num) {
if (rear == arr.length - 1) {
rear = -1;
}
arr[++rear] = num;
size++;
}
public int pop() {
int temp = arr[front++];
if (front == arr.length) {
front = 0;
}
size--;
return temp;
}
}
```
希望这个代码能够帮助你实现一个基本的队列。
相关问题
11. 定义一个类,使用LinkedList<String>,用它实现栈的数据结构。 12. 栈应该至少实现push和pop方法 13. 定义一个类,使用LinkedList<String>,用它实现队列的数据结构。 14. 队列要实现dequeue和enqueue方法
好的,以下是对您提出的问题的回答:
11. 定义一个类,使用LinkedList<String>,用它实现栈的数据结构。
```java
import java.util.LinkedList;
public class Stack {
private LinkedList<String> stack;
public Stack() {
stack = new LinkedList<String>();
}
public void push(String element) {
stack.addFirst(element);
}
public String pop() {
return stack.removeFirst();
}
public boolean isEmpty() {
return stack.isEmpty();
}
public int size() {
return stack.size();
}
}
```
12. 栈应该至少实现push和pop方法。
在上面的代码中,我们使用LinkedList<String>实现了一个栈的数据结构,并实现了push和pop方法。push方法将元素添加到栈的顶部,pop方法将栈顶元素移除并返回它的值。
13. 定义一个类,使用LinkedList<String>,用它实现队列的数据结构。
```java
import java.util.LinkedList;
public class Queue {
private LinkedList<String> queue;
public Queue() {
queue = new LinkedList<String>();
}
public void enqueue(String element) {
queue.addLast(element);
}
public String dequeue() {
return queue.removeFirst();
}
public boolean isEmpty() {
return queue.isEmpty();
}
public int size() {
return queue.size();
}
}
```
14. 队列要实现dequeue和enqueue方法。
在上面的代码中,我们使用LinkedList<String>实现了一个队列的数据结构,并实现了enqueue和dequeue方法。enqueue方法将元素添加到队列的末尾,dequeue方法将队列头部的元素移除并返回它的值。
java用两个栈实现一个队列
在Java中,可以使用两个栈来实现一个队列,这个队列的特点是先进先出(FIFO)。
具体实现如下:
1. 定义两个栈stack1和stack2,stack1用于入队列,stack2用于出队列。
2. 入队操作时,将元素压入stack1。
3. 出队操作时,判断stack2是否为空,如果不为空,则直接弹出stack2的栈顶元素;如果为空,则将stack1中的元素全部弹出并压入stack2,然后再弹出stack2的栈顶元素。
示例代码如下:
```java
import java.util.Stack;
public class QueueWithTwoStacks<T> {
private Stack<T> stack1 = new Stack<>();
private Stack<T> stack2 = new Stack<>();
public void enqueue(T data) {
stack1.push(data);
}
public T dequeue() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
```
上面的代码演示了如何使用两个栈来实现一个队列,这样可以在O(1)的时间内完成入队和出队操作。
阅读全文