Java实现队列结构的详细代码
Posted whieenz的专栏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现队列结构的详细代码相关的知识,希望对你有一定的参考价值。
一、什么是队列结构
一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。
分类:
- 顺序队列结构
- 链式队列结构
基本操作:
- 入队列
- 出队列
二、准备数据
1 static final int QUEUELEN = 15; 2 3 class DATA{ 4 5 String name; 6 int age; 7 } 8 9 class SQType{ 10 DATA[] data = new DATA[QUEUELEN]; 11 int head; 12 int tail; 13 }
在类SQType中data为数据元素,head为队头序号,tail为队尾序号,当head为0时队为空,当tail为QUEUELEN时表示队列已满。
三、初始化队列
在使用队列前首先要创建个空队列,即初始化队列。
- 按符号常量QUEUELEN指定的大小申请一片内存空间用来保存对列中的数据。
- 设置head=0和tail=0,表示一个空队列。
1 SQType SQTypeInit(){ 2 SQType q; 3 if((q=new SQType())!=null){ //申请内存 4 q.head = 0; 5 q.tail = 0; 6 return q; 7 } 8 else 9 { 10 return null; 11 } 12 }
四、判断空队列
1 int SQTypeIsEmpty(SQType q){ 2 int temp = 0; 3 if(q.head==q.tail) 4 { 5 temp = 1; 6 } 7 return temp; 8 }
五、判断满队列
1 int SQTypeIsFull(SQType q){ 2 int temp = 0; 3 if(q.tail==QUEUELEN) 4 temp = 1; 5 return temp; 6 }
六、请空队列
1 void SQTypeClear(SQType q){ 2 q.head = 0; 3 q.tail = 0; 4 }
七、释放空间
1 void SQTypeFree(SQType q){ 2 3 if(q!=null){ 4 q = null; 5 } 6 }
八、入队列
1 int InSQType(SQType q,DATA data){ 2 if(SQTypeIsEmpty(q)==1){ 3 System.out.println("队列已满,操作失败!"); 4 return 0; 5 } 6 else 7 { 8 q.data[q.tail++]=data; 9 return 1; 10 } 11 12 }
九、出队列
1 DATA OutSQType(SQType q){ 2 if(SQTypeIsEmpty(q)==1) 3 { 4 System.out.println("队列为空"); 5 return null; 6 } 7 else 8 { 9 return q.data[q.head++]; 10 } 11 return null 12 }
十、读取节点
1 DATA PeekSQType(SQType q){ 2 if(SQTypeIsEmpty(q)==1) 3 { 4 System.out.println("队列为空"); 5 return null; 6 } 7 else 8 { 9 return q.data[q.head]; 10 } 11 return null 12 }
十一、计算队列长度
1 int SQTypeLen(SQType q){ 2 int temp; 3 temp = q.tail - q.head; 4 return temp; 5 }
以上是关于Java实现队列结构的详细代码的主要内容,如果未能解决你的问题,请参考以下文章
数据结构 Java数据结构 栈和队列 以及LeetCode相关面试题
精华推荐 |算法数据结构专题「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南