[李景山php]算法系列|php 进行队列操作

来源:互联网 发布:最优化 经济学 编辑:程序博客网 时间:2024/05/22 11:45
<?php/** * Created by PhpStorm. * User: ziniu * Date: 2016/9/22 * Time: 16:22 */// php 队列 实现/** * 队列任务背景: * php小菜跟新来的美女同事要QQ号码,作为资深美女程序员,给了小菜一串数字2,3,7,4,1,2,9,2,4 * 并且告诉了小菜解密规则: * 首先将第一个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除,并将第4个数放到这串数的末尾, * 再删除第5个数.....直到剩下最后一个数,将最后一个数也删除,按照刚才删除的顺序,把这些删除的数连在一起 * 就是我们美女同事的QQ号码了! */// 定义 队列 存储对象/** * Class queue */class queue{    public $data=[];//初始化队列存储数据    public $head=0;//队列开始【头】位置 【指针】    public $tail=0;//队列结束【尾】位置 【指针】}// 初始化队列$q = new queue();$q->data = array(2,1,7,4,3,2,9,2,4);$q->tail = count($q->data);// 编写处理函数function getQueue($parameter){    $str = null;// 设置初始化字符串    while($parameter->head < $parameter->tail){// 头尾进行比较        $str .= $parameter->data[$parameter->head];// 保存第一个信息        $parameter->head++;//将头部指针++, 把当前数据从头部位置剔除,        if(isset($parameter->data[$parameter->head])){// 如果 当前 位置 存在数据            // 将当前数据 存到 队列 末尾            $parameter->data[$parameter->tail] = $parameter->data[$parameter->head];            $parameter->tail++;// 增加 队列 头 指针            $parameter->head++;// 增加 队列 尾 指针        }    }    return $str;}echo getQueue($q);
0 0
原创粉丝点击