Java算法(队列操作实例)

来源:互联网 发布:asp.net crm源码 编辑:程序博客网 时间:2024/04/30 18:48

完整代码如下:


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;}}

运行结果:


原创粉丝点击