顺序队列的表示与实现

顺序队列:用一组地址连续的存储单元依次存放从队头到队尾的元素,然后定义front和rear指针分别指示队头元素和队尾元素的位置,进行插入、删除等操作。
为防止假溢出,设计出了循环队列。
在这里插入图片描述
–>队列的初始化

sequenceQuence(){
	front=rear=0;
	quenceArray=(T[])new Object[MaxSize];
}

–>入队

void enQuence(T obj){
	if((rear+1)%quenceArray.length==front){
	T[] p=(T[])new Object[quenceArray.length*2];
	if(rear==quenceArray.length-1){
		for(int i=0;i<=rear;i++){
			p[i]=quenceArray[i];
		}
	}else{
		int i,j=1;
		for(i=front;i<quenceArray.length;i++,j++){
			p[j]=quenceArray[i];
		}
		for(i=0;i<=rear;i++,j++){
			p[j]=quenceArray[i];
		}
		front=0;
		rear=quenceArray.length-1;
	}
	quenceArray=p;
	}
	rear=(rear+1)%quenceArray.length;
	quenceArray[rear]=obj;
}

–>取出头元素

T GetTop(){
	if(isEmpty()){
		System.out.println("队列已空,无法出队!");
		return null;
	}
	return quenceArray[(front+1)%quenceArray.length];
}

–>判空

boolean isEmpty(){
	return front==rear;
}

–>求队列的长度

int size(){
	return (rear-front+quenceArray.length)%quenceArray.length;
}

–>遍历队列

void nextOrder(){
	int j=front;
	for(int i=1;i<=size();i++){
		System.out.print((front+i)%quenceArray.length);
	}
	System.out.println();
}

–>清空队列

void clear(){
	front=rear=0;
}

–>主函数

public static void main(String args[]){
	sequenceQuence<Character> s=new sequenceQuence<Character>();
	s.enQuence('A');
	System.out.println("执行插入操作后队中的数据元素为");
	s.nextOrder();
	s.enQuence('B');
	System.out.println("执行插入操作后队中的数据元素为");
	s.nextOrder();
	s.enQuence('C');
	System.out.println("执行插入操作后队中的数据元素为");
	s.nextOrder();
	s.enQuence('D');
	System.out.println("执行插入操作后队中的数据元素为");
	s.nextOrder();
	s.enQuence('E');
	System.out.println("执行插入操作后队中的数据元素为");
	s.nextOrder();
	System.out.println("队中的数据元素为");
	s.nextOrder();
	s.Dequence();
	System.out.println("执行删除操作后队中的数据元素为");
	s.nextOrder();
	s.Dequence();
	System.out.println("执行删除操作后队中的数据元素为");
	s.nextOrder();
	s.Dequence();
	System.out.println("执行删除操作后队中的数据元素为");
	s.nextOrder();
	System.out.println("队中的数据元素为");
	s.nextOrder();
 }

执行结果
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏小泡泡#

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

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

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

打赏作者

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

抵扣说明:

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

余额充值