zoukankan      html  css  js  c++  java
  • 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;

             }

           

  • 相关阅读:
    一文梳理Ubuntu下Eigen矩阵运算库总结教程
    Ubuntu下安装与使用Eigen矩阵运算库教程
    Ubuntu下cmake教程实践从入门到会用
    collection of vim vim tutorial for beginner
    利用ipython实现多线程
    如何快速地从mongo中提取数据到numpy以及pandas中去
    Git Push 避免用户名和密码方法
    如何使用scikit—learn处理文本数据
    format格式
    fk输入地壳模型容易出错的地方
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/8290434.html
Copyright © 2011-2022 走看看