标签:
队列是一种线性表,它只允许在该表中的一端插入,在另一端删除。
允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front);
下面用Java的数组进行模拟队列的操作:
/**2015-07-26 18:49:08
 *用数组元素来演示队列的内部操作
 *@author lihaiming
 *Email:912547587@qq.com
 */
import java.util.Scanner;
public class Queue {
	//属性变量
	private int[] a;
	private int head=0,tail=0;
	/**
	 * 无参构造方法
	 * 默认数组长度为4;
	 */
	public Queue(){
		a = new int[4];
	}
	/**
	 * 有参构造方法
	 * @param m 数组的长度
	 */
	public Queue(int m){
		a  = new int[m];
	}
	/**
	 * 把元素放到队列的方法
	 * @param i 元素值
	 */
	public void push(int i){
		a[++tail]=i;
	}
	/**
	 * 从队列取出元素方法
	 */
	public void pop(){
		head++;
	}
	/**
	 * 将队列元素依次输出方法
	 */
	public void display(){
		for(int i=head+1;i<=tail;i++){
			System.out.println(a[i]);
		}
	}
	/**
	 * 返回队列的元素个数
	 * @return
	 */
	public int Size(){
		return tail-head;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数组的长度:");
		int m = input.nextInt();
		Queue q = new Queue(m);
		
		System.out.println("请依次输入队列的元素:");
		System.out.println("请按-1结束");
		int c;
		while((c=input.nextInt())!=-1){
			q.push(c);
		}
		System.out.println("依次进入队列的顺序:");
		q.display();
		
		System.out.print("队列里有:");
		System.out.println(q.Size()+"个元素");
		
		System.out.println("依次取出的顺序:");
		while(q.head != q.tail){
			System.out.println(q.a[q.head+1]);
			q.head++;
		}
		
	}
}
程序结果:
请输入数组的长度:
6
请依次输入队列的元素:
请按-1结束
1
4
3
6
-1
依次进入队列的顺序:
1
4
3
6
队列里有:4个元素
依次取出的顺序:
1
4
3
6
首先确定一个数组的长度,这里我先确定一个长度6,依次添加数值1、4、3、6;
-1输入结束符号
取出的数值顺序是依然是1、4、3、6
队列是先进先出;
标签:
原文地址:http://www.cnblogs.com/lihaiming93/p/4678449.html