package com.wck.test83;
/**
* 自定义队列
* @author kun
* @date 2021年8月3日
*/
public class Myqueue {
private static class Node{
Object item;
Node next;
}
private Node first; // 队列中的第一个
private Node last; // 队列中的最后一个
private int size;
public boolean isEmpty() {
return size == 0;
}
public int getSize() {
return size;
}
/**
* 当前指定的Object添加至当前队列中
* @param item
*/
public void enqueue(Object item) {
Node old = last; // 获取最后一个Node
last = new Node(); // 新建Node,作为最后一个节点
last.item = item; // 设置最后一个Node的元素(作为最后一个)
if (isEmpty()) { // 如果为空, 则是第一次入队
first = last;
}else {
old.next = last; // 反之设置将最后一个Node设为前一个的下一个Node
}
size++;
}
// 出队
public Object dequeue() {
if (isEmpty()) {
return null;
}
Object item = first.item; // 获取第一个元素
first = first.next; // 第一个元素后面的元素提升为第一
if(isEmpty()) { // 如果后面没有元素, 则设为null
last = null;
}
--size; // 元素数量减1
return item;
}
}
实现类:
package com.wck.test83;
public class quenuImp {
public static void main(String[] args) {
Myqueue queue = new Myqueue();
queue.enqueue(111);
queue.enqueue(222);
queue.enqueue("aaa");
queue.enqueue("bbb");
queue.enqueue("ccc");
queue.enqueue("ddd");
queue.enqueue("eee");
int size = queue.getSize();
for(int i = 0; i < size; i++) {
System.out.print(queue.dequeue() + "\t");
}
System.out.println();
}
}