数组模拟队列

使用数组模拟一个普通队列

package com.queue;

import java.util.Scanner;

import javax.management.JMRuntimeException;

public class ArrayQueue {

	public static void main(String[] args) {
		
		//测试
		ArrayQueue Queue = new ArrayQueue();
		arrayQueue queue = Queue.new arrayQueue();
 		queue.createQueue(3);
		Scanner scanner = new Scanner(System.in);
		char key = ' ';//用户选择
		boolean loop = true;
		while (loop) {
			System.out.println("*****************************");
			System.out.println("s:显示队列所有元素");
			System.out.println("a:添加元素");
			System.out.println("g:取出元素");
			System.out.println("h:显示队头元素");
			System.out.println("e:退出程序");
			System.out.println("*****************************");
			System.out.println("请输入你的选择");
			key = scanner.next().charAt(0);
			
		
		switch (key) {
		case 's':
			queue.showQueue();
			break;
		case 'a':
			System.out.println("请输入要添加的数据");
			int data = scanner.nextInt();
			queue.addQueue(data);;
			break;
		case 'g':
			try {
				queue.getQueue();
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
			break;
		case 'h':
			queue.getHead();;
			break;
		case 'e':
			loop = false;
			break;
		default:
			break;
		}
		

	}
	}
	//使用数组模拟队列
	class arrayQueue{
		private int maxSize;//队列最大长度
		private int front;//队头下标
		private int rear;//队尾下标
		private int arr[];//用来模拟队列的数组
		
		//创造队列
		public void createQueue(int arrMaxSize) {
			maxSize = arrMaxSize;
			front = rear = -1;
			arr = new int[maxSize];
		}
		
		//判断队列是否为空
		public boolean isEmpty() {
			return rear == front;
		}
		
		//判断队列是否已满
		public boolean isFull() {
			return rear == maxSize-1;
		}
		
		//往队列中添加元素
		public void addQueue(int data) {
			//判断队列是否已满
			if (isFull()) {
				System.out.println("队列已满,不能添加元素");
				return;
			}
			arr[++rear] = data;
		}
		
		//队头元素出队列
		private void getQueue() {
			//判断是否为空
			if (isEmpty()) {
				//抛出异常
				throw new RuntimeException("队列为空");
			}
			System.out.println(arr[++front]);
		}
		
		//遍历队列
		private void showQueue() {
			for (int i = 0; i < arr.length; i++) {
				System.out.println(arr[i]);
			}
		}
		
		//取队头元素
		public void getHead() {
			System.out.println(arr[++front]);
		}
		
		
	}
	

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值