完整代碼如下:
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;}}
運行結果: