《算法通关村—队列的实现》

一、队列的特征

     队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,即我们常说的FIFO(first in first out)先进先出。就像我们平常吃饭的时候去食堂排队打饭,去的早,先进队伍,我们就先打到饭,先出队列是一个道理。

     队列实现方式也有两种形式,基于数组和基于链表。 对于基于链表,因为链表的长度是随时都可以变的,实现起来比较简单。如果是基于数组的,则复杂一些。这里我们采用链表来实现队列。

二、队列实现

基于链表实现队列还是比较好处理的,只要在尾部后插入元素,在头部删除元素就行了。

 

代码实现:

public class LinkQueue {

	//节点的定义
	class Node {
		int data;
		Node next;

		public Node(int data) {
			this.data = data;
		}

	}

	private Node front; //队列头
	private Node rear; //队列尾
	private int size; //队列长度
	
	/*
	 * 入队
	 */
	public void push(int val) {
		Node newNode = new Node(val);

		if (front == null) {
			//如果队列为空,那么新节点就等于头节点和尾节点
			front = rear = newNode;
		} else {
			//负责在尾部添加新节点
			Node temp = front;
			while (temp.next != null) {
				temp = temp.next;
			}
			temp.next = newNode;
			rear = newNode;
		}
		size++;

	}

	/*
	 * 出队
	 */
	public int pull() {
		if(front==null) {
			System.out.println("队列为空");
			return -1;
		}
		//返回头节点,并且让头节点的下一个节点成为新的头节点
		int res = front.data;
		front = front.next;
		
		size--;
		return res;
	}
	
	/*
	 * 获取队列长度
	 */
	public int getSize() {
		return size;
	}

	/*
	 * 展示队列中的元素
	 */
	public void show() {
		Node temp = front;
		while (temp != null) {
			System.out.print(temp.data + "-->");
			temp=temp.next;
		}
		System.out.println("null");

	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值