现在的位置: 首页 > 综合 > 正文

Java算法(队列操作实例)

2013年09月08日 ⁄ 综合 ⁄ 共 1670字 ⁄ 字号 评论关闭

完整代码如下:

package com.xu.test;

import java.util.Scanner;

public class P5_1 {

	/**
	 * @功能:队列操作实例
	 * @作者:
	 * @日期:2012-10-20
	 */

	public static void main(String[] args) {
		SQType st = new SQType();
		DATA d = null;
		Scanner input = new Scanner(System.in);
		SQType stack = st.SQTypeInit();
		System.out.println("入队操作:");
		System.out.println("输入姓名    年龄进行入队操作:");
		do{
			DATA data = new DATA();
			data.name = input.next();
			data.age = input.nextInt();
			if(data.name.equals("0"))
			{
				break;						//输入“0”,则退出
			}
			else{
				st.InSQType(stack, data);
				
			}
		}while(true);
		
		String temp = "1";
		System.out.println("出队操作:按任意不为0进行出队操作:");
		temp = input.next();
		while(!temp.equals("0"))
		{
			d = st.OutSQType(stack);
			System.out.printf("出队列的数据是(%s,%d)\n",d.name,d.age);
			temp = input.next();
			
		}
		System.out.println("测试结束!");
		st.SQTypeFree(stack);

	}

}

class DATA {
	String name;
	int age;
}

class SQType {
	static final int QUEUELEN = 15;
	DATA[] data = new DATA[QUEUELEN]; // 队列数组
	int head;
	int tail;

	@SuppressWarnings("unused")
	SQType SQTypeInit() {
		SQType q;
		if ((q = new SQType()) != null) {
			q.head = 0;
			q.tail = 0;
			return q;
		} else {
			return null;
		}
	}

	int SQTypeIsEmpty(SQType q) // 判断队列空
	{
		int temp = 0;
		if (q.head == q.tail) {
			temp = 1;
		}
		return temp;
	}

	int SQTypeIsFull(SQType q) // 判断队列满
	{
		int temp = 0;
		if (q.tail == QUEUELEN)
			return 1;
		return temp;
	}

	void SQTypeClear(SQType q) // 清空队列
	{
		q.head = 0;
		q.tail = 0;

	}

	void SQTypeFree(SQType q) // 释放队列
	{
		if (q != null)
			q = null;

	}

	int InSQType(SQType q, DATA data) // 入队列
	{
		if (q.tail == QUEUELEN) {
			System.out.println("队列已满!操作失败!");
			return 0;
		} else {
			q.data[q.tail++] = data;
			return 1;
		}
	}

	DATA OutSQType(SQType q) // 出队列
	{
		if (q.head == q.tail) {
			System.out.println("队列已空,操作失败!");
			System.exit(0);

		} else {
			return q.data[q.head++];

		}
		return null;
	}

	DATA PeekSQType(SQType q) // 读结点数据
	{
		if (SQTypeIsEmpty(q) == 1) {
			System.out.println("空队列!");
			return null;
		} else {
			return q.data[q.head];
		}
	}

	int SQTypeLen(SQType q) // 计算队列长度
	{
		int temp;
		temp = q.tail - q.head;
		return temp;

	}
}

运行结果:

抱歉!评论已关闭.