Home > Backend Development > PHP Tutorial > PHP Double Linked List (SplDoublyLinkedList) Introduction and Usage Examples_PHP Tutorial

PHP Double Linked List (SplDoublyLinkedList) Introduction and Usage Examples_PHP Tutorial

WBOY
Release: 2016-07-13 09:53:38
Original
870 people have browsed it

PHP Doubly Linked List (SplDoublyLinkedList) Introduction and Usage Examples

This article mainly introduces the relevant information about PHP Doubly Linked List (SplDoublyLinkedList) and usage examples. Friends who need it can refer to it. Next

Doubly linked list is an important linear storage structure. For each node in the doubly linked list, it not only stores its own information, but also stores the addresses of the predecessor and successor nodes.

 The SplDoublyLinkedList class in PHP SPL provides operations on doubly linked lists.

The SplDoublyLinkedList class summary is as follows:

 ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {

 

public __construct ( void )

public void add ( mixed $index , mixed $newval )

//双链表的头部节点

public mixed top ( void )

//双链表的尾部节点

public mixed bottom ( void )

//双联表元素的个数

public int count ( void )

//检测双链表是否为空

public bool isEmpty ( void )

 

 

//当前节点索引

public mixed key ( void )

//移到上条记录

public void prev ( void )

//移到下条记录

public void next ( void )

//当前记录

public mixed current ( void )

//将指针指向迭代开始处

public void rewind ( void )

//检查双链表是否还有节点

public bool valid ( void )

 

//指定index处节点是否存在

public bool offsetExists ( mixed $index )

//获取指定index处节点值

public mixed offsetGet ( mixed $index )

//设置指定index处值

public void offsetSet ( mixed $index , mixed $newval )

//删除指定index处节点

public void offsetUnset ( mixed $index )

 

//从双链表的尾部弹出元素

public mixed pop ( void )

//添加元素到双链表的尾部

public void push ( mixed $value )

 

//序列化存储

public string serialize ( void )

//反序列化

public void unserialize ( string $serialized )

 

//设置迭代模式

public void setIteratorMode ( int $mode )

//获取迭代模式SplDoublyLinkedList::IT_MODE_LIFO (Stack style) SplDoublyLinkedList::IT_MODE_FIFO (Queue style)

public int getIteratorMode ( void )

 

//双链表的头部移除元素

public mixed shift ( void )

//双链表的头部添加元素

public void unshift ( mixed $value )

 

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { public __construct (void) public void add ( mixed $index , mixed $newval ) //The head node of the double linked list public mixed top (void) //Tail node of double linked list public mixed bottom (void) //The number of double table elements public int count (void) //Check whether the double linked list is empty public bool isEmpty (void) //Current node index public mixed key (void) //Move to the previous record public void prev (void) //Move to the next record public void next (void) //Current record public mixed current (void) //Point the pointer to the beginning of the iteration public void rewind (void) //Check whether there are still nodes in the double linked list public bool valid (void) //Whether the node at the specified index exists public bool offsetExists ( mixed $index ) //Get the node value at the specified index public mixed offsetGet ( mixed $index ) //Set the value at the specified index public void offsetSet ( mixed $index , mixed $newval ) //Delete the node at the specified index public void offsetUnset ( mixed $index ) //Pop elements from the end of the double linked list public mixed pop (void) //Add elements to the end of the double linked list public void push (mixed $value) //Serialized storage public string serialize (void) //Deserialization public void unserialize ( string $serialized ) //Set iteration mode public void setIteratorMode ( int $mode ) //Get the iteration mode SplDoublyLinkedList::IT_MODE_LIFO (Stack style) SplDoublyLinkedList::IT_MODE_FIFO (Queue style) public int getIteratorMode (void) //Remove elements from the head of the double linked list public mixed shift (void) //Add elements to the head of the double linked list public void unshift ( mixed $value ) }

It is also easy to use

 ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

$list = new SplDoublyLinkedList();

$list->push('a');

$list->push('b');

$list->push('c');

 

$list->unshift('top');

$list->shift();

 

print_r(array(

'pop' => $list->pop(),

'count' => $list->count(),

'isEmpty' => $list->isEmpty(),

'bottom' => $list->bottom(),

'top' => $list->top()

));

 

$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);

print_r($list->getIteratorMode());

 

for($list->rewind(); $list->valid(); $list->next()) {

echo $list->current().PHP_EOL;

}

 

print_r($a = $list->serialize());

//print_r($list->unserialize($a));

 

$list->offsetSet(0,'new one');

$list->offsetUnset(0);

print_r(array(

'offsetExists' => $list->offsetExists(4),

'offsetGet' => $list->offsetGet(0),

 

));

print_r($list);

1 2

34 5 6 7 8 9
10
11
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
$list = new SplDoublyLinkedList(); $list->push('a'); $list->push('b'); $list->push('c'); $list->unshift('top'); $list->shift(); print_r(array( 'pop' => $list->pop(), 'count' => $list->count(), 'isEmpty' => $list->isEmpty(), 'bottom' => $list->bottom(), 'top' => $list->top() )); $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO); print_r($list->getIteratorMode()); for($list->rewind(); $list->valid(); $list->next()) { echo $list->current().PHP_EOL; } print_r($a = $list->serialize()); //print_r($list->unserialize($a)); $list->offsetSet(0,'new one'); $list->offsetUnset(0); print_r(array( 'offsetExists' => $list->offsetExists(4), 'offsetGet' => $list->offsetGet(0), )); print_r($list);
http://www.bkjia.com/PHPjc/1000107.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1000107.htmlTechArticleIntroduction and usage examples of PHP Doubly Linked List (SplDoublyLinkedList) This article mainly introduces the introduction and usage examples of PHP Doubly Linked List (SplDoublyLinkedList) For relevant information on usage examples, friends who need it can refer to it...
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template