队列(数组模拟)

//队列(数组模拟)
class Queue{
	 private int[] queue; //队列函数
	 int length;
	 int head;           //头指针
	 int tail;            //尾指针
	 int num;           //丢列中元素个数
	 public Queue(){
	}
	 public Queue(int s){     //构造队列函数
	 	  length=s;
	 	  queue=new int[length];      //s为队列长度
	 	  head=0;
	 	  tail=-1;
	 	  num=0;
	}
	public void inQueue(int e){  //入队列
		 if(tail+1==length){
		 	 System.out.println("溢出了,元素"+e+"没有入队列!!!");
		 	 return;
		}
		 queue[++tail]=e;
		 num++;
	}
	public int outQueue(){      //出队列
		 if(head==length){
		 	 System.out.println("队列里没有元素!!!");
	  	}
		int temp=queue[head++];
		num--;
		return temp;
	}
	public int readQueue(){      //出队列(只读不操作队列)
		 if(head==length){
		 	 System.out.println("队列里没有元素!!!");
	  	}

		return queue[head];
	}
	public void isEmpty(){  //是否为空
		 if(num==0){
		 	  System.out.println("队列里为空!!!");
		 }
	}
	public void isFull(){   //是否满了
		 if(tail==length-1){
		 	 System.out.println("队列已经满了!!!");
		}else{
		   System.out.println("队列没满!!!");
		  }
	}
	public int count(){      //队列中元素个数
		return num;
	}
}
class Main{
	 public static void main(String args[]){
	 	  Queue q=new Queue(5);q.isEmpty();
	 	  q.inQueue(2);
	 	  System.out.println("读出的队列元素是:"+q.readQueue());
	 	  System.out.println("取出的队列的头元素是:"+q.outQueue());
	 	  q.inQueue(3);
	 	  System.out.println("读出的队列元素是:"+q.readQueue());
	 	  System.out.println("取出的队列的头元素是:"+q.outQueue());
	 	  q.inQueue(4);
	 	  System.out.println("读出的队列元素是:"+q.readQueue());
	 	  System.out.println("取出的队列的头元素是:"+q.outQueue());
	 	  q.inQueue(5);q.isEmpty();
	 	  System.out.println("读出的队列元素是:"+q.readQueue());
	 	  System.out.println("取出的队列的头元素是:"+q.outQueue());
	 	  q.inQueue(6);q.isFull();
	 	  System.out.println("读出的队列元素是:"+q.readQueue());
	 	  System.out.println("取出的队列的头元素是:"+q.outQueue());
	 	  q.isEmpty();
	}
}

时间: 2024-10-25 05:56:01

队列(数组模拟)的相关文章

【Weiss】【第03章】练习3.25:数组模拟队列

[练习3.25] 编写实现队列的例程,使用 a.链表 b.数组 Answer: 在这章一开头就已经写了个链表的队列例程了,所以实际上只要做b小题就可以. 数组模拟队列和链表的两点小不同是: ①.数组空间有限,入队需要检测数组是否已经满 ②.数组经过几次操作后,rear可能绕回front前面,所以许多操作都要用模来实现. 测试代码: 1 #include <iostream> 2 #include "queue.h" 3 using namespace std; 4 usin

数组模拟队列

数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图.其中,maxSize 是该队列的最大容量. 因为队列的输出.输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标, front 会随着数据输出而改变,而 rear 则是随着数据输入而改变.如图所示: 当将数据存入队列时称为 “addQueue”,addQueue 的处理需要有两个步骤:思路分析: (1)将尾指针往后移:rear+1,当 front == rear

数组模拟环形队列

1.为什么要用环形队列? 2.数组模拟环形队列 3.代码实现 package com.queue; import java.util.Scanner; /** * 数组模拟环形队列 * @author nidegui * @create 2019-10-24 11:33 */ public class CircleQueue { public static void main(String[] args) { System.out.println("测试环形队列的案列"); Circl

队列篇之使用数组模拟一个队列

队列是一个有序列表, 可以使用数组实现, 也可以使用链表实现 队列遵守先进先出的原则 1. 下面使用数组模拟一个队列 public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue queue = new ArrayQueue(3); queue.add(1); queue.show(); System.out.println("-----------------"); queue.ad

03数组模拟环形队列(没有明白)

1,对数组模拟队列的优化,充分利用数组,因此将数组看做是一个环形的(通过取模的方式来实现) 2,分析说明: ①尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意 (rear+1) % maxSize == front   满 ②rear == front   空 ③思路如下: 1,front变量的含义做一个调整,front就指向队列的第一个元素,front的初始值是0 2,rear便令的含义做一个调整,rear指向队列最后一个元素的后一个位置,因为

队列——使用数组模拟环形队列

一.思路分析 上一篇讲到用数组模拟队列,数组无法复用,下面讲解了用数组模拟环形队列的方法,采用取模的方式,使得数组可以重复使用. 首先先对front和rear的含义做了一个调整,front指向队列的第一个元素,rear指向队列最后一个元素的后一个位置.队列满的条件是(rear +1) % maxSize = front ,其中maxSize表示队列的容量.假如maxSize=10, 牺牲掉一个位置,front = 0,此时若rear = 9,队列就已经满了.队列为空的条件是rear == fro

数组模拟单向链表例题(UVa11988)

指针的链表实现方式是,当前节点的next指向下一个节点,用数组模拟就是 for(int i=next[0];i!=0;i=next[i]) i=next[i]:就是一条链. 例题: 你有一个破损的键盘.键盘上的所有键都可以正常工作,但有时Home键或者End键会自动按下.你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开.当你打开显示器时之后,展现在你面前的是一段悲剧文本.你的任务时在打开显示器之前计算出这段悲剧文本. 输入包含多组数据.每组数据占一行,包含不超过100000个字母

UVA11988 Broken Keyboard (a.k.a. Beiju Text)【数组模拟链表】

Broken Keyboard (a.k.a. Beiju Text) You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem with the keyboard is that sometimes the "home" key or the "end" key gets automatically pressed (inter

Hdu 3887树状数组+模拟栈

题目链接 Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1757    Accepted Submission(s): 582 Problem Description You are given a tree, it’s root is p, and the node is numbered fr