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