用Java语言实现队列的基本操作

Java语言实现队列的基本操作

声明:学习笔记,仅供自己学习使用,如有雷同,纯属巧合

首先要为队列声明一个新的类,可以使用数组

public static class SqQueue{
	public static final int MaxSize = 10;
	int [] data = new int[this.MaxSize];
	int front = 0;
	int rear = 0;
	}

队列有两种表示方式:

rear指向队尾元素
rear指向队尾元素后一个位置

这里我们先讨论第一种方式:rear指向队尾元素

  1. 对一个队列进行初始化
public void InitQueue(SqQueue a){
	a.front = 0;
	a.rear = 0;
	}

这里是实际上是把rear和front都对应上开始的位置

  1. 判断队列是非为空
public boolean QueueEmpty(SqQueue a){
	if(a.rear == a.front)
		return true;
	else
		return false;
	}

利用rear和front是否指向同一个位置来判断队列是否为空

  1. 进队操作
public boolean EnQueue(SqQueue a, int x){
	if(((a.rear + 1) % a.MaxSize) == a.front)
			return false;
	a.data[a.rear] = x;
	a.rear = (a.rear + 1) % a.MaxSize;
	return true;
	}
  1. 出队操作
public boolean DeQueue(SqQueue a, int x){
	if(a.rear == a.front)
		return false;
	x = a.data[a.front];
	a.front = (a.front + 1) % a.MaxSize;
	return true;
	}
  1. 获取队头元素的值,用X返回
public boolean GetHead(SqQueue a, int x){
	if(a.rear == a.front)
		return false;
	x = a.data[a.front];
	return true;
	} 
  1. 新建队列
public void teatQueue(){
	SqQueue test = null;
	this.InitQueue(test);
	}

本质上是SqQueue类的实例化

  1. 最重要的两行代码
    a.rear == a.front//判空
    ((a.rear + 1) % a.MaxSize) == a.front//判满

这里用到了模运算符,是为了实现一个循环队列的效果,使得在出队和进队交替进行时,储存空间能够最大化利用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值