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

<?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
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值