数据结构:栈与队列

栈:栈是一种后进先出的数据结构,我们可以想象为一个瓶子,往里放东西。又比如,函数的递归调用,就是一种栈的结构。

php中用数组实现栈:

$arr = array();

// 入栈
function push(&$arr,$val){
    $size = count($arr);
    $arr[$size] = $val;
}

// 出栈
function pop(&$arr){
    $size = count($arr);
    unset($arr[$size-1]);
}

push($arr,"a1");
push($arr,"a2");
push($arr,"a3");
echo "入栈后排序:";
print_r($arr);

pop($arr);
echo "出栈后排序:";
print_r($arr);

结果:

入栈后排序:Array
(
    [0] => a1
    [1] => a2
    [2] => a3
)
出栈后排序:Array
(
    [0] => a1
    [1] => a2
)

队列:队列是一种先进先出的数据结构,类似于我们平日生活中的排队场景。

php中用数组实现队列:

// 用数组实现队列
class Queue {
    private $queue;
    
    public function __construct() {
        $this->queue = array();
    }
    
    // 入队操作
    public function enqueue($item) {
        array_push($this->queue, $item);
    }
    
    // 出队操作
    public function dequeue() {
        if ($this->isEmpty()) {
            return null;
        }
        // 删除数组第一元素,被返回它
        return array_shift($this->queue);
    }
    
    // 判断队列是否为空
    public function isEmpty() {
        return (count($this->queue) == 0);
    }
    
    // 队列大小
    public function size() {
        return count($this->queue);
    }
    
    // 返回头部元素
    public function peek() {
        if ($this->isEmpty()) {
            return null;
        }
        return $this->queue[0];
    }
}

// 创建队列实例
$queue = new Queue();

// 入队操作
$queue->enqueue("苹果");
$queue->enqueue("香蕉");
$queue->enqueue("鸭梨");

// 出队操作
echo $queue->dequeue().PHP_EOL;  // 输出 "苹果"

// 获取队列当前大小
echo $queue->size().PHP_EOL;  // 输出 "2"

// 获取队首元素
echo $queue->peek().PHP_EOL;  // 输出 "香蕉"

结果:

苹果
2
香蕉

 

posted @ 2023-06-17 15:58  波罗斯の程序日记  阅读(12)  评论(0编辑  收藏  举报