[Bài đọc] Lớp SplDoublyLinkedList
NỘI DUNG BÀI VIẾT
Lớp SplDoublyLinkedList cung cấp các chức năng chính của một danh sách liên kết đôi.
Mô tả rút gọn của lớp này như sau:
SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { /* Constants */ const integer IT_MODE_LIFO = 2 ; const integer IT_MODE_FIFO = 0 ; const integer IT_MODE_DELETE = 1 ; const integer IT_MODE_KEEP = 0 ; /* Methods */ public __construct ( void ) public add ( mixed $index , mixed $newval ) : void public bottom ( void ) : mixed public count ( void ) : int public current ( void ) : mixed public getIteratorMode ( void ) : int public isEmpty ( void ) : bool public key ( void ) : mixed public next ( void ) : void public offsetExists ( mixed $index ) : bool public offsetGet ( mixed $index ) : mixed public offsetSet ( mixed $index , mixed $newval ) : void public offsetUnset ( mixed $index ) : void public pop ( void ) : mixed public prev ( void ) : void public push ( mixed $value ) : void public rewind ( void ) : void public serialize ( void ) : string public setIteratorMode ( int $mode ) : void public shift ( void ) : mixed public top ( void ) : mixed public unserialize ( string $serialized ) : void public unshift ( mixed $value ) : void public valid ( void ) : bool}
Các hằng số
Trật tự duyệt
SplDoublyLinkedList::IT_MODE_LIFO
- Danh sách sẽ được duyệt theo trật tự Last-In/First-Out, giống như stack
SplDoublyLinkedList::IT_MODE_FIFO
- Danh sách sẽ được duyệt theo trật tự First-In/First-Out, giống như queue
Chế độ duyệt
SplDoublyLinkedList::IT_MODE_DELETE
- Phần tử được duyệt sẽ bị xoá khỏi danh sách.
SplDoublyLinkedList::IT_MODE_KEEP
- Phần tử được duyệt sẽ không bị xoá khỏi danh sách.
Các phương thức
SplDoublyLinkedList::add | Thêm/chèn một giá trị vào một vị trí nhất định |
SplDoublyLinkedList::bottom | Lấy về một node ở phần đầu của danh sách |
SplDoublyLinkedList::__construct | Tạo một danh sách liên kết đôi mới |
SplDoublyLinkedList::count | Đếm số lượng phần tử trong danh sách |
SplDoublyLinkedList::current | Trả về phần tử hiện tại |
SplDoublyLinkedList::getIteratorMode | Trả về chế độ duyệt hiện tại |
SplDoublyLinkedList::isEmpty | Kiểm tra xem danh sách có rỗng hay không |
SplDoublyLinkedList::key | Trả về chỉ số của vị trí hiện tại |
SplDoublyLinkedList::next | Di chuyển đến phần tử tiếp theo |
SplDoublyLinkedList::offsetExists | Kiểm tra xem chỉ số được truyền vào có tồn tại hay không |
SplDoublyLinkedList::offsetGet | Trả về giá trị tại một chỉ số nhất đinh |
SplDoublyLinkedList::offsetSet | Thay đổi giá trị của một node tại vị trí nhất định |
SplDoublyLinkedList::offsetUnset | Loại bỏ giá trị tại một vị trí nhất định |
SplDoublyLinkedList::pop | Lấy về node ở phần cuối của danh sách |
SplDoublyLinkedList::prev | Di chuyển đến phần tử trước đó |
SplDoublyLinkedList::push | Thêm một phần tử vào đuôi của danh sách |
SplDoublyLinkedList::rewind | Chuyển con trỏ về phần đầu của danh sách |
SplDoublyLinkedList::setIteratorMode | Thay đổi chế đọ duyệt |
SplDoublyLinkedList::shift | Dịch chuyển một node từ phần đầu của danh sách |
SplDoublyLinkedList::top | Lấy về phần tử ở đuôi của danh sách |
SplDoublyLinkedList::unshift | Chèn vào một phần tử vào phần đầu của danh sách |
SplDoublyLinkedList::valid | Kiểm tra xem liệu danh sách có còn chứa node nào nữa hay không |
Sử dụng SplDoublyLinkedList
Khởi tạo một SplDoublyLinkedList mới:
$dlist=new SplDoublyLinkedList();
Thêm các phần tử vào phần cuối của danh sách:
$dlist->push('hiramariam'); $dlist->push('maaz'); $dlist->push('zafar');
Danh sách bây giờ chứa 3 phần tử là:
hiramariam
maaz
zafar
Thêm các phần tử vào phần đầu của danh sách:
$dlist->unshift(1); $dlist->unshift(2); $dlist->unshift(3);
Danh sách bây giờ chứa 6 phần tử là:
3
2
1
hiramariam
maaz
zafar
Chúng ta có thể xoá một phần tử khỏi phần đuôi của danh sách:
$dlist->pop();
Danh sách bây giờ chứa 5 phần tử:
3
2
1
hiramariam
maaz
Chúng ta có thể xoá một phần tử khỏi phần đầu của danh sách:
$dlist->shift();
Danh sách bây giờ chứa 4 phần tử:
2
1
hiramariam
maaz
Chúng ta có thể thay đổi một phần tử ở một vị trí nhất định:
$dlist->add(3 , 2.24);
Chúng ta có thể duyệt qua danh sách bằng cách sử dụng một vòng lặp for:
for($dlist->rewind(); $dlist->valid(); $dlist->next()){ echo $dlist->current()."<br/>";}echo "<br/>";
Để duyệt theo chiều ngược lại, chúng ta có thể thay đổi chế độ:
$dlist->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO); for($dlist->rewind();$dlist->valid();$dlist->next()){ echo $dlist->current()."<br/>";; }
Lưu ý: Học viên tra cứu đầy đủ lớp SplDoublyLinkedList ở đây: https://www.php.net/manual/en/class.spldoublylinkedlist.php
Leave a Reply