我正在尝试使用PHP中的数组对象创建优先级队列类。我知道PHP中有SplPriorityQueue,但我想在这里练习面向对象的编程。优先级队列具有数据和优先级,因此我有一个粗略的MyQueue类来实现这些属性。我不确定我是否朝着正确的方向前进。我之前没有在PHP中使用过arrayObject。
public class MyQueue{
private string data;
private int priority;
myQueue = arrayObject(array(data => priority));
}
答案 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>';
}