Java实现队列结构的详细代码
一、什么是队列结构
一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。
分类:
- 顺序队列结构
- 链式队列结构
基本操作:
- 入队列
- 出队列
二、准备数据
static final int QUEUELEN = 15;
class DATA{
String name;
int age;
}
class SQType{
DATA[] data = new DATA[QUEUELEN];
int head;
int tail;
}
在类SQType中data为数据元素,head为队头序号,tail为队尾序号,当head为0时队为空,当tail为QUEUELEN时表示队列已满。
三、初始化队列
在使用队列前首先要创建个空队列,即初始化队列。
- 按符号常量QUEUELEN指定的大小申请一片内存空间用来保存对列中的数据。
- 设置head=0和tail=0,表示一个空队列。
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)
temp = 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(SQTypeIsEmpty(q)==1){
System.out.println("队列已满,操作失败!");
return 0;
}
else
{
q.data[q.tail++]=data;
return 1;
}
}
九、出队列
DATA OutSQType(SQType q){
if(SQTypeIsEmpty(q)==1)
{
System.out.println("队列为空");
return null;
}
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];
}
return null
}
十一、计算队列长度
int SQTypeLen(SQType q){
int temp;
temp = q.tail - q.head;
return temp;
}
Java实现队列结构的详细代码的更多相关文章
- java 实现二叉树结构基本运算详细代码
static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...
- Java实现链表结构的具体代码
一.数据准备 1. 定义节点 2. 定义链表 1.数据部分 2.节点部分 class DATA //数据节点类型 { String key; String name; int age; } cla ...
- java连接oracle数据库详细代码
详细代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;imp ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
- 基本算法思想Java实现的详细代码
基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...
- Java连接MySQL数据库——含详细步骤和代码
工具:eclipse.MySQL.MySQL连接驱动:mysql-connector-java-5.1.45.jar 首先要下载Connector/J地址:http://www.mysql.com/d ...
- Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 05 Vector详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
随机推荐
- WPF优化:Freezable冻结对象
原文:WPF优化:Freezable冻结对象 WPF虽然很美观,效果很炫,但是对资源的消耗也很大,尤其是初次接触WPF的人,因为很多地方虽然实现了想要的效果,但是由于经验问题,所以也会造成很大的资源浪 ...
- payload指安全测试数据
payload,翻译过来是有效载荷 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如数据量的大小.校验位等,这样就相当于给已经分批的原始 ...
- POJ 2182 Lost Cows (求序列第k大)
题解 二分+树状数组 显然最和一个数的值就是rank 那么其它数有什么规律? 从后往前匹配rank,我们可以发现第i个数的rank为还没有匹配的rank第(a[i]+1)大的数 这可以用 树状数组+二 ...
- LOJ6503. 「雅礼集训 2018 Day4」Magic(容斥原理+NTT)
题目链接 https://loj.ac/problem/6503 题解 题中要求本质不同的序列数量,不太好搞.我们考虑给相同颜色的牌加上编号,这样所有牌都不相同.那么如果我们求出了答案,只需要将答案除 ...
- Luogu P1108 低价购买 DP
第一问求最长下降子序列,不提: 第二问:借鉴了最短路的方法??? 我们求出来了每个位置的最长下降子序列的长度,那么刻意这样这样转移 if f[i]==f[j]+1&&a[i]<a ...
- 【AC自动机】【树状数组】【dfs序】洛谷 P2414 [NOI2011]阿狸的打字机 题解
这一题是对AC自动机的充分理解和树dfs序的巧妙运用. 题目背景 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机. 题目描述 打字机上只有28个按键,分别印有26个小写英文字母和' ...
- ZOJ - 2042 模运算DP
解法见网上参考 这种只判断可达性的DP一般用bool 除非int能得到更多的信息 #include<iostream> #include<algorithm> #include ...
- 论文笔记 | Self-organized Text Detection with Minimal Post-processing via Border Learning
论文链接:http://openaccess.thecvf.com/content_ICCV_2017/papers/Wu_Self-Organized_Text_Detection_ICCV_201 ...
- PIE SDK存储格式转换
1.算法功能简介 影像存储格式转换可以实现栅格数据存储格式的自由转换,其中存储格式可以是 BSQ. BIP. BIL 三种格式. 遥感数字图像数据的存储与分发,通常采用以下三种数据格式: BSQ( ...
- k8s 集群搭建
一,环境介绍 master node1 node2 IP 192.168.0.164 192.168.0.165 192.168.0.167 环境 centos 7 centos 7 centos ...