完整代码如下:
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;
}
}
运行结果: