在PHP中创建优先级队列类

时间:2015-07-22 03:29:27

标签: php oop priority-queue

我正在尝试使用PHP中的数组对象创建优先级队列类。我知道PHP中有SplPriorityQueue,但我想在这里练习面向对象的编程。优先级队列具有数据和优先级,因此我有一个粗略的MyQueue类来实现这些属性。我不确定我是否朝着正确的方向前进。我之前没有在PHP中使用过arrayObject。

public class MyQueue{
    private string data;
    private int priority;

    myQueue = arrayObject(array(data => priority));

}

1 个答案:

答案 0 :(得分:1)

优先级队列类可能如下所示:

class MyQueue implements Iterator, Countable {
    private $data;

    public function __construct() {
        $this->data = array();
    }

    function compare($priority1, $priority2) {}

    function count() {
        return count($this->data);
    }

    function extract() {
        $result = $this->current();
        $this->next();
        return $result;
    }

    function current() {
        return current($this->data). ' - ' .$this->key();
    }

    function key() {
        return key($this->data);
    }

    function next() {
        return next($this->data);
    }

    function insert($name, $priority) {
        $this->data[$name] = $priority;
        asort($this->data);
        return $this;
    }

    function isEmpty() {
        return empty($this->data);
    }

    function recoverFromCorruption() {}

    function rewind() {}

    function valid() {
        return (null === key($this->data)) ? false : true;
    }
}

用法:

$items = new MyQueue();

$items ->insert('Charles', 8)
       ->insert('James', 1)
       ->insert('Michael', 4)
       ->insert('John', 2)
       ->insert('David', 6)
       ->insert('William', 5)
       ->insert('Robert', 3)
       ->insert('Richard', 7);

foreach($items as $item) {
    echo $item,'<br>';
}