[Bài đọc] Lớp SplQueue

Tổng quan

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

Your email address will not be published. Required fields are marked *