package Queue;
/**
* @author 真他喵的学不动咯
* @create 2022-08-10--20:23
*/
public class MyQue { //实现一个队列
//构造节点
public class Node<V>{
//属性
public V value;
public Node next;
//构造器
public Node(V data){
value=data;
}
}
public class MyQueue<V>{
//属性
private Node<V> head; //定义头
private Node<V> tail; //定义尾
private int size; //定义长度
//构造器
public MyQueue(){ //在构造器中初始化参数
head=null;
tail=null;
size=0;
}
//各种方法
public boolean isEmpty(){ //是否为空
return size==0;
}
public int size(){ //返回长度
return size;
}
//上夹
public void offer(V value){ //入值
Node<V> cur=new Node(value); //建一个结点cur【单链表】
if (tail==null){ //队列中,尾巴都是null,那这个队列一定是空的!
head=cur; //队列为空,那就把head和tail都设置为cur,指向即将进来的元素
tail=cur;
}else {
tail.next=cur;
tail=cur;
}
size++; //每进来一个,把长度+1
}
//弹出
public V poll(){
V ans=null; //返回的是值,而不是结点
if (head!=null){
ans=head.value; //ans是要返回的值
head = head.next; //从head往下传
size--;
}
if (head==null){
tail=null; //必须把尾巴置null,不然最后一个数据没办法被JVM垃圾回收
}
return ans;
}
//不弹出,仅仅拿出头结点的值
public V peek(){
V ans=null;
if (head!=null){
ans=head.value;
}
return ans;
}
//对数器被略了
//自己看Left的对数器是怎么写的
}
}
//实现一个队列 缺对数器,要从leftcode里找对数器
最新推荐文章于 2024-05-31 10:46:10 发布