Advertisement
Guest User

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

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