队列
实现队列
/*
*路人假helloWorld
*/
package com.cjj.sort;
import java.util.Iterator;
public class Queue<T> implements Iterable<T>{
private Node head;
private int N;
private Node last;
//内部结点类
private class Node{
public T item;
public Node next;
public Node(T item,Node next){
this.item = item;
this.next = next;
}
}
public Queue(){
this.head = new Node(null,null);
this.last = null;
this.N = 0;
}
//判断队列是否为空
public boolean isEmpty(){
return N == 0;
}
//获取队列元素的个数
public int size(){
return N;
}
//往对列中插入一个元素
public void enqueue(T t){
Node newNode = new Node(t,null);
if (last == null){
last = newNode;
head.next = last;
}else{
last.next = newNode;
last = newNode;
}
N++;
}
//往队列中拿出一个元素
public T dequeue(){
Node oldFirst;
if (isEmpty()){
return null;
}
oldFirst = head.next;
head.next = oldFirst.next;
N--;
return oldFirst.item;
}
@Override
public Iterator<T> iterator() {
return new QIterator();
}
private class QIterator implements Iterator{
Node n;
public QIterator(){
n = head;
}
@Override
public boolean hasNext() {
return n.next != null;
}
@Override
public Object next() {
n = n.next;
return n.item;
}
}
}
测试
package com.cjj.test;
import com.cjj.sort.Queue;
public class QueueTest {
public static void main(String[] args) {
Queue<String> q = new Queue<>();
q.enqueue("a");
q.enqueue("b");
q.enqueue("c");
q.enqueue("d");
for (String item : q){
System.out.println(item);
}
System.out.println("----------------------");
System.out.println("取出的第一个队列元素是:" + q.dequeue());
System.out.println("队列中还剩几个元素:" + q.size());
}
}
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术