[Bài đọc] Lớp SplQueue
Lớp SplQueue cung cấp các chức năng chính của một hàng đợi, được triển khai bằng cách sử dụng danh sách liên kết đôi.
Mô tả ngắn gọn của lớp SplQueue như sau:
SplQueue extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { /* Methods */ __construct ( void ) dequeue ( void ) : mixed enqueue ( mixed $value ) : void setIteratorMode ( int $mode ) : void /* Inherited methods */ public SplDoublyLinkedList::add ( mixed $index , mixed $newval ) : void public SplDoublyLinkedList::bottom ( void ) : mixed public SplDoublyLinkedList::count ( void ) : int public SplDoublyLinkedList::current ( void ) : mixed public SplDoublyLinkedList::getIteratorMode ( void ) : int public SplDoublyLinkedList::isEmpty ( void ) : bool public SplDoublyLinkedList::key ( void ) : mixed public SplDoublyLinkedList::next ( void ) : void public SplDoublyLinkedList::offsetExists ( mixed $index ) : bool public SplDoublyLinkedList::offsetGet ( mixed $index ) : mixed public SplDoublyLinkedList::offsetSet ( mixed $index , mixed $newval ) : void public SplDoublyLinkedList::offsetUnset ( mixed $index ) : void public SplDoublyLinkedList::pop ( void ) : mixed public SplDoublyLinkedList::prev ( void ) : void public SplDoublyLinkedList::push ( mixed $value ) : void public SplDoublyLinkedList::rewind ( void ) : void public SplDoublyLinkedList::serialize ( void ) : string public SplDoublyLinkedList::setIteratorMode ( int $mode ) : void public SplDoublyLinkedList::shift ( void ) : mixed public SplDoublyLinkedList::top ( void ) : mixed public SplDoublyLinkedList::unserialize ( string $serialized ) : void public SplDoublyLinkedList::unshift ( mixed $value ) : void public SplDoublyLinkedList::valid ( void ) : bool}
Sử dụng SplQueue
Khởi tạo hàng đợi:
$queue = new SplQueue();
Thêm phần tử vào phần đuôi của hàng đợi:
$queue->enqueue('A'); $queue->enqueue('B'); $queue->enqueue('C');
Duyệt lần lượt qua các phần tử của hàng đợi:
$queue->rewind(); while ($queue->valid()) { echo $queue->current(), "\n"; $queue->next();}
Kết quả:
A
B
C
Hiển thị nội dung của hàng đợi và lấy ra phần tử đầu của hàng đợi:
print_r($queue); $queue->dequeue(); //remove first one print_r($queue);
Kết quả:
SplQueue Object
(
[flags:SplDoublyLinkedList:private] => 4
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => A
[1] => B
[2] => C
)
)
SplQueue Object
(
[flags:SplDoublyLinkedList:private] => 4
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => B
[1] => C
)
)
Lưu ý: Bởi vì lớp SplQueue kế thừa từ lớp SplDoublyLinkedList cho nên nó có phương thức và. Nhưng, nếu chúng ta sử dụng push() và pop() thì nó sẽ hành xử như một Stack chứ không phải là Queue.
Lưu ý: Học viên có thể tham khảo đầy đủ về lớp SplQueue tại đây: https://www.php.net/manual/en/class.splqueue.php
Leave a Reply