package Queue;
import java.util.Iterator;
/**
* @Author zhw
* Version 1.0
* @Description LinkQueue
* Date 2021/8/15 19:27
**/
public class LinkQueue<T> implements Iterable<T>{
//头结点
private Node head;
//尾结点
private Node last;
//长度
private int N;
private class Node{
private T item;
private Node next;
public Node(T item,Node node){
this.item=item;
this.next=node;
}
}
public LinkQueue(){
this.head=new Node(null,null);
this.last=null;
this.N=0;
}
//判断队列是否为空
public boolean isEmpty(){
return N==0;
}
//获取队列中元素的个数
public int size(){
return N;
}
//从队列中拿出一个元素
public T deQueue(){
if (isEmpty()){
return null;
}
Node node = head.next;
head.next=node.next;
N--;
if (isEmpty()){
last=null;
}
return node.item;
}
//往队列中插入一个元素
public void enQueue(T t){
if (last==null){
//当尾结点为null时
last=new Node(t,null);
head.next=last;
}else {
//当尾结点不为null
Node node = new Node(t, null);
last.next=node;
last=node;
}
N++;
}
@Override
public Iterator<T> iterator() {
return new QIterator();
}
private class QIterator implements Iterator{
private Node n;
public QIterator(){
this.n=head;
}
@Override
public boolean hasNext() {
return n.next!=null;
}
@Override
public Object next() {
n=n.next;
return n.item;
}
}
}
数据结构-Java-链队
最新推荐文章于 2024-08-08 21:53:48 发布