队列的处理

26 篇文章 3 订阅

队列

队列的定义:队列是一种基于先进先出的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性表,它按照先进先出的原则存储数据,先进入的数据在读取数据时先被读出来。

 代码实现

import java.util.Iterator;

public class queue <T> implements Iterable<T>{
	private Node head;//记录首结点
	private Node  last;//记录尾结点
	private int N;//存储元素个数
	
	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;
	}
	//向队列中插入元素t,和链表里插入元素的原理一样
	public void enqueue(T t)
	{
		Node oldlast=last;
   last=new Node(t,null);
   if(isEmpty())
   {
	   head.next=last;
   }
   else
   {
	   oldlast.next=last;
   }
	N++;	
	}
	//从队列中拿出元素
	public T dequeue() {
		if(isEmpty())
		{
			return null;
		}
		Node oldfirst=head.next;
		head.next=oldfirst.next;
		N--;
		//因为出队列的本质就是删除元素,如果队列中的元素被删除完了的时候需要重置null
		if(isEmpty())
		{
			last=null;
		}
		return  oldfirst.item;	
	}

	public Iterator<T> iterator()
	{
		return  new QIterator();
	}
	private class QIterator implements Iterator{
		private Node n;
		public QIterator ()
		{
			this.n=head;
		}
		public boolean hasNext()
		{
			return n.next!=null;
		}
		public Object next()
		{
			n=n.next;
			return n.item;
		}
	}
	
}
public class test {
public static void main(String[] args)
{
    //创建队列对象
	 queue<String> q=new queue<>();
	
    //测试队列的enqueue方法
	q.enqueue("a");
	q.enqueue("b");
	q.enqueue("c");
	q.enqueue("d");
	for(String str:q)
	{
		System.out.println(str);
	}
	System.out.println("——————————————————————————————");
	
	//测试队列的dequeue方法
	String result =q.dequeue();
	System.out.println("出队列的元素是:"+result);
	System.out.println("剩余的元素是:"+q.size());
	
  }

}

 学习如逆水行舟,不进则退。和小吴一起加油吧!

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴有想法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值