用php实现一个双向队列 如何实现?

PHP面试题作业

class DuiLie {

private $array = array();//声明空数组

public function setFirst($item){

    return array_unshift($this->array,$item);//头入列

}

public function delFirst(){

    return array_shift($this->array);//头出列

}

public function setLast($item){

    return array_push($this->array,$item);//尾入列

}

public function delLast(){

    return array_pop($this->array,$item);//尾出列

}

public function show(){

    var_dump($this->array);//打印数组

}

public function Del(){

    unset($this->array);//清空数组

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Python中,可以使用内置的heapq模块来实现优先级队列。heapq模块提供了一种基于堆数据结构的优先级队列实现,可以快速地插入和弹出元素,并且可以保证队列中元素的顺序是按照优先级从高到低排列的。下面是一个用Python实现优先级队列的示例代码: ```python import heapq class PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq.heappush(self._queue, (-priority, self._index, item)) self._index += 1 def pop(self): return heapq.heappop(self._queue)[-1] ``` 在上面的代码中,我们定义了一个PriorityQueue类,它包含两个实例变量:_queue和_index。_queue是一个列表,用于保存插入的元素和它们的优先级;_index是一个计数器,用于给元素分配一个唯一的序号,以便在优先级相同时能够按照插入顺序比较它们的大小。 这个类包含两个方法:push和pop。push方法用于向队列中插入元素,它接受两个参数,一个是元素本身,另一个是元素的优先级。push方法将元素和优先级打包成一个三元组,然后使用heapq.heappush函数将这个三元组插入到_queue列表中。由于heapq默认是按照升序排序的,而我们需要按照优先级降序排序,因此需要将优先级取负数。同时,我们还需要将元素的序号加入到三元组中,以便在优先级相同时能够按照插入顺序比较它们的大小。 pop方法用于从队列中弹出元素,它使用heapq.heappop函数从_queue列表中弹出具有最高优先级的元素,并返回它的值。 使用这个PriorityQueue类,我们可以轻松地实现优先级队列,例如: ```python q = PriorityQueue() q.push('task1', 3) q.push('task2', 1) q.push('task3', 2) print(q.pop()) # 输出:task1 print(q.pop()) # 输出:task3 print(q.pop()) # 输出:task2 ``` 在上面的代码中,我们向队列中插入了三个元素,它们的优先级分别是3、1和2。通过多次调用pop方法,我们可以按照优先级从高到低依次弹出元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxw1844912514

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值