数据结构-队列(JAVA)

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。(百度百科)

    用链表实现一个队列大概就是要有一个头节点,一个尾节点,尾节点取出,头结点插入,要注意的一点是当队列中没有元素时要做特殊处理。

    队列可以解决经典的走迷宫问题。

public class LinkedQueue<T> implements Queue<T>{
			//队列事尾进头出~~
			//大概就是两个变量,一个头部,一个尾部,尾部主要插入,头部主要取出,需要注意的是当没有元素时候要做一些处理
	private Node<T> front,rear;							//front和rear分别指向头结点和尾节点
	public LinkedQueue() {
		this.front=this.rear=null;						//空队列中开始都为null
	}
	public boolean isEmpty() {
		return this.front==null&&this.rear==null;		//如果二者都为空,那就判断为空
	}

	public boolean add(T x) {							//插入x
		if(x==null)										//如果x为null插入失败
			return false;
		Node <T> q=new Node<T>(x,null);					//中间变量
		if(this.front==null)						
			this.front=q;								//空队插入
		else this.rear.next=q;							//队尾插入
		this.rear=q;
		return true;
	}

	public T peek() {
		return this.isEmpty()?null:this.front.data;
	}

	public T poll() {
		if(isEmpty())										//如果队列为空直接返回Null
			return null;
		T x=front.data;
		this.front=this.front.next;
		if(this.front==null)								//如果没有元素了,尾部就也没有了
			this.rear=null;
		return x;
	}
	
}
class Node<T>{
	public Node(T data,Node<T> next) {
		this.data=data;
		this.next=next;
	}
	T data;
	Node<T> next;
	Node<T> front;
}

参考书籍《JAVA数据结构》第四版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值