Advertisement
Guest User

Еще лучше пример двусвязного списка

a guest
Jun 27th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.00 KB | None | 0 0
  1. <?php
  2.  
  3. Class Elem
  4. {
  5.     private $value = 0;
  6.     private $elem_next = NULL;
  7.     private $elem_prev = NULL;
  8.  
  9.     function __construct($data)
  10.     {
  11.         $this->value = $data;
  12.     }
  13.  
  14.     public function getData()
  15.     {
  16.         return $this->value;
  17.     }
  18.  
  19.     public function setNext($elem)
  20.     {
  21.         $this->elem_next = $elem;
  22.     }
  23.  
  24.     public function setPrev($elem)
  25.     {
  26.         $this->elem_prev = $elem;
  27.     }
  28.  
  29.     public function getNext()
  30.     {
  31.         return $this->elem_next;
  32.     }
  33.  
  34.     public function getPrev()
  35.     {
  36.         return $this->elem_prev;
  37.     }
  38. }
  39.  
  40. $list = NULL;
  41. $elemCurrent = new Elem(1);  // будем работать с текущим элементом
  42. $list = $elemCurrent; // list - наш список, добавляем в него первый элемент
  43.  
  44. foreach (range(2,5) as $step) {
  45.     $elemNew = new Elem($step);
  46.     $elemNew->setPrev($elemCurrent); // устанавливаем для нового будущего элемента списка указатель на предыдущий элемент (текущий)
  47.     $elemCurrent->setNext($elemNew); // устанавливаем для текущего элемента указатель на будущий элемент
  48.     $elemCurrent = $elemCurrent->getNext(); // теперь наш текущий элемент = будущий, далее работаем с ним
  49.     $elemNew = NULL; // не мусорим!
  50. }
  51.  
  52.  
  53. var_dump($list); // по сути, отобразить список = отобразить его первый элемент
  54.  
  55. $elemCurrent = $list; // начинаем с элемента 1
  56. var_dump($elemCurrent->getNext()->getData()); // 2, т.к. следующий от первого
  57.  
  58. $elemCurrent = $elemCurrent->getNext(); // перешли к элементу 2
  59. $elemCurrent = $elemCurrent->getNext()->getNext(); // перешли к элементу 4
  60.  
  61. var_dump($elemCurrent->getPrev()->getData()); // 3, т.к. предыдущий от 4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement