
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源
去关联
栈在百度百科中的定义:
$\color{ff0000}{下面的代码并非使用的Java代码,作为伪代码,我希望大家能尝试去实现一下我没有给出的部分}$
/**
* @Author Piwriw.
* @Date 2022/1/20
* @motto 你不能做我的诗,正如我不能做你的梦.
*/
/**
* 数组实现Stack
*/
public class ArrayStack<E> implements Stack<E> {
Array<E> array;
public ArrayStack(int capacity) {
array = new Array<E>(capacity);
}
public ArrayStack() {
array = new Array<E>();
}
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public void push(E e) {
array.addLast(e);
}
@Override
public E pop() {
return array.removeLast();
}
@Override
public E peek() {
return array.getLast();
}
}
百度百科对队列的定义:
$\color{ff0000}{下面的代码并非使用的Java代码,作为伪代码,我希望大家能尝试去实现一下我没有给出的部分}$
/**
* @Author Piwriw.
* @Date 2022/1/20
* @motto 你不能做我的诗,正如我不能做你的梦.
*/
/**
* 数组队列
* @param <E>
*/
public class ArrayQueue <E> implements Queue<E> {
private Array<E> array;
public ArrayQueue(int capacity){
array=new Array<E>(capacity);
}
public ArrayQueue(){
array=new Array<E>();
}
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public void enqueue(E e) {
array.addLast(e);
}
@Override
public E dequeue() {
return array.removeFirst();
}
@Override
public E getFront() {
return array.getFirst();
}
}
其实队列远比我们的栈存在更多的可玩性,比如说循环队列、双向队列等等,下面我想分享一下循环队列
public class LoopQueue<E> implements Queue<E> {
private E[] data;
private int front, tail;
private int size;
public LoopQueue(int capacity) {
data = (E[]) new Object[capacity + 1];
front = 0;
tail = 0;
size = 0;
}
public LoopQueue() {
this(10);
}
@Override
public int getSize() {
return size;
}
@Override
public boolean isEmpty() {
return front == tail;
}
@Override
public void enqueue(E e) {
data[tail] = e;
tail = (tail + 1) % data.length;
size++;
}
@Override
public E dequeue() {
if (isEmpty()) {
throw new IllegalArgumentException("Cannot dequeue from an empty queue.");
}
E ret = data[front];
data[front] = null;
front = (front + 1) % data.length;
size--;
return ret;
}
@Override
public E getFront() {
if (isEmpty()){
throw new IllegalArgumentException("Queue is empty");
}
return data[front];
}
}