JAVA----数组模拟队列

JAVA 实现数组模拟队列
实现:入队,出队,显示队头元素,显示队列功能

package zc;

import java.util.Scanner;

/**
 * 数组模拟实现队列
 * 缺点:数组只能用一次
 * @author D
 *
 */
public class ArrayQueueTest {
	public static void main(String [] args) {
		ArrayQueue aq=new ArrayQueue(5);
		char key=' '; //接受用户输入
		boolean flag=true;
		Scanner scan=new Scanner(System.in);
		while(flag) {
			System.out.println("s(show):显示队列");
			System.out.println("a(add):入队");
			System.out.println("p(pop):出队");
			System.out.println("h(head):显示队列头");
			System.out.println("e(exit):退出程序");
			
			key=scan.next().charAt(0);
			switch(key) {
			case 's':
				aq.showQueue();
				break;
			case 'a':
				System.out.println("输入要添加的数据");
				int value=scan.nextInt();
				aq.add(value);
				break;
			case 'p':
				try {
					int val=aq.pop();
					System.out.println("出队数据为:"+val);
				}catch(Exception e){
					System.out.println(e.getMessage());
				}
				break;
			case 'h':
				try {
					int head=aq.head();
					System.out.println("队头数据为:"+head);
				}catch(Exception e){
					System.out.println(e.getMessage());
				}
				break;
			case 'e':
				flag=false;
				break;			
			default:
				System.out.println("输入错误,请重新输入");
					
			}
		}
		System.out.println("程序退出");
	}
}

class ArrayQueue{
	private int maxSize;  //数组最大存储容量
	private int front=-1;   //队列头指针
	private int rear=-1;    //队列尾指针
	private int[] arr;
	public ArrayQueue(int maxSize) {
		super();
		this.maxSize = maxSize;
		arr=new int[maxSize];
	}
	
	//判断队列是否为空
	public boolean isEmpty() {
		return rear==front;
	}
	
	//判断队列是否已满
	public boolean isFull() {
		return rear==maxSize-1;
	}
	
	//入队
	public void add(int ele) {
		if(isFull()) {
			System.out.println("队列已满,不能添加数据");
			return;
		}
		rear++;
		arr[rear]=ele;
	} 
	
	//出队
	public int pop() {
		if(isEmpty()) {
			throw new RuntimeException("队列为空");
		}
		
		front++;
		return arr[front];	
	}
	
	
	//显示数组中的元素
	public void showQueue() {
		if(isEmpty()) {
			System.out.println("队列为空,无元素");
			return;
		}
		StringBuilder sb=new StringBuilder();
		sb.append("[");
		for(int i=0;i<arr.length;i++) {
			sb.append(arr[i]+",");
		}
		sb.setCharAt(sb.length()-1, ']');
		System.out.println(sb);
	}
	
	//显示队列头数据
	public int head() {
		if(isEmpty()) {
			throw new RuntimeException("队列为空");
		}
		
		return arr[front+1];
	}
	
}

发布了12 篇原创文章 · 获赞 2 · 访问量 331

猜你喜欢

转载自blog.csdn.net/yuchen_lucky/article/details/105319903