队列的顺序实现

举报
肥学 发表于 2022/03/26 00:22:34 2022/03/26
【摘要】 import java.util.*; public class Main { public Queue InitQueue() { Queue queue=new Queue(new int...


import java.util.*;

public class Main {
	public Queue InitQueue() {
		Queue queue=new Queue(new int[10]);
		queue.front=0;
		queue.rear=queue.data.length-1;//good不然会存在最后一位为空就显示栈满
		return queue;
	}
	public Queue EnQueue(Queue queue,int n) {
		//这个判断是为了出现有出队现象导致再有数据入队时rear取余后从0下标开始
		if(queue.len>=queue.data.length) {
			System.out.println("该队列已满!!!");
		}else {
			queue.rear=(queue.rear+1)%queue.data.length;//循环数列也是自己说的雨伞法
			queue.data[queue.rear]=n;
			queue.len++;
		}
		return queue;
	}
	public Queue Dequeue(Queue queue) {
		if(queue.len==0) {
			System.out.println("该队列以空!!!");
			return queue;
		}
		System.out.println("队首元素"+queue.data[queue.front]+"以出队列。");
		queue.front--;
		queue.len--;
		return queue;
		
	}
	public boolean isFull(Queue queue) {
		if(queue.len==queue.data.length) {
			System.out.println("已满!!");
			return false;
		}
		else if(queue.len<queue.data.length) {
			System.out.println("未满!");
			return true;
		}
		return false;
	}
	public static void main(String[] args) {
		Main queue=new Main();
		
		Queue q=queue.InitQueue();
		for(int i=0;i<10;i++) {
			queue.EnQueue(q, i+1);
			queue.isFull(q);
		}
		queue.EnQueue(q, 100);
		System.out.println("尾指针地址"+q.rear);
		queue.Dequeue(q);
		queue.EnQueue(q, 100);
		System.out.println("尾指针地址"+q.rear);//证明该队列是循环的
		
	}
}

class Queue{
	int data[];
	int front,rear;
	int len=0;
	public Queue() {
		
	}
	public Queue(int data[]) {
		this.data=data;
	}
	
}

  

文章来源: blog.csdn.net,作者:肥学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jiahuiandxuehui/article/details/123339837

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。