Java队列的算法_Java算法(队列操作实例)

完整代码如下:

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;

}

}

运行结果:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值