文档章节

PHP数据结构->模拟静态队列

小洋哥
 小洋哥
发布于 2013/08/11 00:23
字数 505
阅读 284
收藏 9
点赞 0
评论 0
<?php

/********************************************************
* 我写的PHP都是从C语言的数据结构中演化而来************************
**************************************************************

/**
 *  1.用PHP模拟一个静态队列 (以数组为列子 只有6个元素) 是一个循环队列
 *  2.pBase->初始化后指向一个数组
 *  3.front ->初始化为0,指向队列的第一个元素
 *  4.rear->初始化为0,指向最后一个元素的下一个元素
 *  5.end_queue-> 保存出队的值以后的数字 
 *  6.en_queue ->入队列的方法
 *  7.full_queue->判断队列是否已满
 *  8.empty_queue->判断队列是否为空
 *  9.traverse_queue->遍历队列
 *  10.out_queue->出队的函数
 *  @Author 任孟洋 
 *  @time   2013-8-10
 ***/

 Class  Queue {

      public  $pBase;       //一个数组
      public  $front;       //指针指向队列的第一个元素 
      public  $rear;        //指针指向队列的最后一个元素
      public  $End_queue;   //记录出队的元素
      public  $Start_queue; //记录入队的元素

       //初始化
      public  function  __construct(){       
           $this->pBase =Array();
           $this->front =  0;
           $this->rear = 0;
      }

       // 入队
      public function en_queue(&$QUEUE,$val){

        if ( $this->full_queue($QUEUE)){

             return  FALSE; //失败
        
              } else {        
                                                                         
           $QUEUE->pBase[$QUEUE->rear] = $val;      //把元素入队 (成功)
                 
           $QUEUE->rear =($QUEUE->rear+1) % 6;//rear往上移动一位
            
                   return   TRUE;
        
              }
      }

    //判断队列是否已满
   public function full_queue($QUEUE){

               if(($QUEUE->rear+1) % 6 === $QUEUE->front){
              
                    return  TRUE; //满
               
               } else {
               
                    return  FALSE; //没满
               
               }

      }
  
    //判断是否为空
      public  function  empty_queue($QUEUE){

               if ($QUEUE->front == $QUEUE->rear){
                  
                     return TRUE;
               
               } else {
               
                     return FALSE;
               
               }
      }  
     
        //循环数输出队列
       public function  traverse_queue($QUEUE){
        
             $q = $QUEUE->front ;
             
             while ( $q != $QUEUE->rear){

                  echo  '数列为<br/>'.$QUEUE->pBase[$q].'<br/>';
                                                                        
                  $q = ($q+1) % 6;//向上移动一位
             }

      }

      //出队
      public function  out_queue($QUEUE){
            
               if(!$this->empty_queue($QUEUE)){

                     $this->End_queue = $QUEUE->pBase[$QUEUE->front];
             
                     $QUEUE->front = ($QUEUE->front + 1) % 6;  //向上移动一位       
             
                 
                  }
       }
}

   //输出界面

   //显示格式
   header("Content-Type:text/html;charset=UTF-8;");
   echo '<hr/>';
   echo '没有初始化之前的空间是多少'.var_dump(memory_get_usage());
   echo  '<hr/>'; 
    //实例化
   $QUEUE = new Queue();


    /*入队*/
   $QUEUE->en_queue($QUEUE,1);
   $QUEUE->en_queue($QUEUE,2);
   $QUEUE->en_queue($QUEUE,3);
   $QUEUE->en_queue($QUEUE,4);
   $QUEUE->en_queue($QUEUE,5);
   $QUEUE->en_queue($QUEUE,6);
   
   /**出队**/
   $QUEUE->out_queue($QUEUE);


   /*入队*/
  $QUEUE->en_queue($QUEUE,6);
  $QUEUE->traverse_queue($QUEUE); //遍历

   echo '<hr/>';
   echo '出对以后的数字'.$QUEUE->End_queue.'<br/>';


   echo '初始化以后'.var_dump(memory_get_usage());
   echo  '<hr/>';

 

?>

 

© 著作权归作者所有

共有 人打赏支持
小洋哥
粉丝 22
博文 38
码字总数 39565
作品 0
成都
程序员
小蚂蚁学习数据结构(8)——线性结构——线性结构复习

线性结构即将告一段落,来个简单总结一下。 连续存储(数组) //定义一个数组结构体struct Arr{ int * pBase; //保存数组的指针 int len; //保存数组的长度 int cnt; //数组元素的有效个数}...

嗜学如命的小蚂蚁 ⋅ 2016/01/05 ⋅ 0

PHP V5.3 中的新特性,第 1 部分: 对象接口的变化

PHP V5 和面向对象编程 与 PHP V4 提供的特性相比,2004 年发布的 PHP V5 在面向对象编程(OOP)和设计方面向前迈出了很大的一步。它提供了一些必要的改进,例如类可见性、合适的构造函数和解...

未来十年 ⋅ 2011/12/19 ⋅ 0

PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)

http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深...

szxy1234 ⋅ 2017/08/24 ⋅ 0

PhpSms 稳定可靠的php短信发送库

可能是目前最聪明、优雅的PHP短信发送库了。从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供。 转载GitHub:https://github.com/to...

请天点 ⋅ 2016/12/22 ⋅ 0

小蚂蚁学习数据结构(6)——线性结构——队列的介绍

队列: 定义:一种可以实现“先进先出”的存储结构 分类: 链式队列——用链表实现 静态队列——用数组实现 静态队列通常都必须是循环队列 循环队列的讲解: 1,静态队列为什么必须是循环队列...

嗜学如命的小蚂蚁 ⋅ 2016/01/03 ⋅ 0

CMS

1.CMS 是什么? 内容管理系统(Content Management System,简称CMS)是指在一个合作模式下,用于管理工作流程的一套制度。该系统可应用于手工操作中,也可以应用到电脑或网络里。作为一种中...

一杯千岁醉 ⋅ 2017/05/22 ⋅ 0

Github上的PHP资源汇总

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Composer库安装器 Pickle: 可以在任意平台上安装PHP扩展包 依赖管理的附加部...

zhangsirsdo ⋅ 2015/01/07 ⋅ 2

小蚂蚁学习数据结构(7)——线性结构——队列的代码演示

使用数组实现静态队列。 /静态队列/ include <stdio.h> include <malloc.h> //定义机构体typedef struct Queue{int * pBash; //存放数组int front; //队列第一个元素下标int rear; //队列最后......

嗜学如命的小蚂蚁 ⋅ 2016/01/04 ⋅ 0

Github上PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Composer库安装器 Pickle: 可以在任意平台上安装PHP扩展包 静态站点生成器 ...

zhiqiangw ⋅ 2016/12/18 ⋅ 0

pthreads(二)pthreads结合redis实现消息队列

一个简单的模拟场景demo(需要pthreads和phpredis扩展) 1 RedisService.php 提供redis链接 单例实现 2 maker.php 向队列写入模拟数据 3 worker.php 提供5个线程扫描队列 进行消费 4 在mac上跑...

燕玉苗 ⋅ 2016/10/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 30分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 49分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 55分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 今天 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部