• java实现队列的详细代码


    一、什么是队列结构

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

    分类:

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

    基本操作:

    1. 入队列
    2. 出队列

       二:准备数据

    static final  int QUEUELEN=15;

    class DATA{

               String name;

               int age;

               }

    class SQType{

                  DATA  date[]=new DATA[QUEUELEN];

                  int head;

                  int tail;

                    }

    在类SQType中data为数据元素,head为队头序号,tail为队尾序号,当head为0时队为空,当tail为QUEUELEN时表示队列已满。

    三:初始化队列

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

    1. 按符号常量QUEUELEN指定的大小申请一片内存空间用来保存对列中的数据。
    2. 设置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 SQTypeIsNull(SQType q){

                   int temp=0;

                   if(q.head=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 IntSQType(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;

             }

           

  • 相关阅读:
    linux如何添加内核模块
    LINUX内核符号表
    MIPS 架构
    将char转成bit,文件读写
    回顾一下今天VIM历程,加深印象,以免忘记!
    Notebook of A Road Map Through Nachos
    老林课上笔记
    C# 通过探测邮件服务器进行Email地址有效性检验
    详解在visual studio中使用git版本系统(图文)
    基于aspnet Forms身份验证基本原理
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/8290434.html
Copyright © 2020-2023  润新知