• Java实现队列结构的详细代码


    一、什么是队列结构

    一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。

    分类:

    1. 顺序队列结构
    2. 链式队列结构

    基本操作:

    1. 入队列
    2. 出队列

    二、准备数据

     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时表示队列已满。

    三、初始化队列

    在使用队列前首先要创建个空队列,即初始化队列。

    1. 按符号常量QUEUELEN指定的大小申请一片内存空间用来保存对列中的数据。
    2. 设置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 }
  • 相关阅读:
    layui formSelects-v4复选框总结等table操作记
    C# 更改 WebBrowser UserAgent
    SQL Server 页撕裂
    c# 实现操作系统 “运行” 功能
    asp.net updatepanel 客户端事件
    javascript des 加密解密
    无日志文件还原数据库(只有mdf无ldf)
    关于 WebForm 在未来微软的替代方案
    C# 从32位程序启动64位程序
    SQL SERVER 数据库修复方法 (数据库变为 "可疑")
  • 原文地址:https://www.cnblogs.com/whieenz/p/5361731.html
Copyright © 2020-2023  润新知