{"id":389586,"date":"2024-06-29T08:41:33","date_gmt":"2024-06-29T08:41:33","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=389586"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=389586","title":{"rendered":"<span>Implementation of Linked List in PHP<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>A linked list is a linear data structure, which contains node structure and each node contains two elements. A data part that stores the value at that node and next part that stores the link to the next node as shown in the below image:<\/p>\n<p>  <img decoding=\"async\" alt=\"Linked List Node\" src=\"https:\/\/www.alphacodingskills.com\/imgfiles\/linked-list-node-link.PNG\"\/>  <\/p>\n<p>The first node also known as HEAD is usually used to traverse through the linked list. The last node (next part of the last node) points to NULL. The list can be visualized as a chain of nodes, where every node points to the next node.<\/p>\n<p>  <img decoding=\"async\" alt=\"Linked List\" src=\"https:\/\/www.alphacodingskills.com\/imgfiles\/linked-list.PNG\"\/>  <\/p>\n<h2><a href=\"https:\/\/www.alphacodingskills.com\/cpp\/ds\/cpp-linked-list.php\">Implementation of Singly Linked List<\/a><\/h2>\n<p>  <\/p>\n<h2>Representation:<\/h2>\n<p>  <\/p>\n<p>In PHP, singly linked list can be represented as a class and a Node as a separate class. The LinkedList class contains a reference of Node class type. <\/p>\n<p>  <\/p>\n<pre><code class=\"php\">\/\/node structure class Node {   public $data;   public $next; }  class LinkedList {   public $head;    \/\/constructor to create an empty LinkedList   public function __construct(){     $this->head = null;   } }; <\/code><\/pre>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h2><a href=\"https:\/\/www.alphacodingskills.com\/cpp\/ds\/cpp-linked-list.php\">Create a Linked List<\/a><\/h2>\n<p>  <\/p>\n<p>Let us create a simple linked list which contains three data nodes.<\/p>\n<pre><code class=\"php\"> &lt;?php \/\/node structure class Node {   public $data;   public $next; }  class LinkedList {   public $head;    \/\/constructor to create an empty LinkedList   public function __construct(){     $this->head = null;   }     };  \/\/ test the code   \/\/create an empty LinkedList $MyList = new LinkedList();  \/\/Add first node. $first = new Node(); $first->data = 10; $first->next = null; \/\/linking with head node $MyList->head = $first;  \/\/Add second node. $second = new Node(); $second->data = 20; $second->next = null; \/\/linking with first node $first->next = $second;  \/\/Add third node. $third = new Node(); $third->data = 30; $third->next = null; \/\/linking with second node $second->next = $third; ?> <\/code><\/pre>\n<p>  <\/p>\n<h2><a href=\"https:\/\/www.alphacodingskills.com\/java\/ds\/java-linked-list-traversal.php\">Traverse a Linked List<\/a><\/h2>\n<p>  <\/p>\n<p>Traversing through a linked list is very easy. It requires creating a temp node pointing to the head of the list. If the temp node is not null, display its content and move to the next node using temp next. Repeat the process till the temp node becomes null. If the temp node is empty at the start, then the list contains no item.<\/p>\n<p>  <\/p>\n<p>The function <i>PrintList<\/i> is created for this purpose. It is a <b>3-step process<\/b>.<\/p>\n<p>  <\/p>\n<pre><code class=\"php\"> public function PrintList() {      \/\/1. create a temp node pointing to head   $temp = new Node();   $temp = $this->head;      \/\/2. if the temp node is not null continue    \/\/   displaying the content and move to the    \/\/   next node till the temp becomes null   if($temp != null) {     echo \"\\nThe list contains: \";     while($temp != null) {       echo $temp->data.\" \";       $temp = $temp->next;     }   } else {          \/\/3. If the temp node is null at the start,      \/\/   the list is empty     echo \"\\nThe list is empty.\";   } }  <\/code><\/pre>\n<p>  <\/p>\n<h2><a href=\"https:\/\/www.alphacodingskills.com\/cs\/ds\/cs-insert-a-new-node-at-the-end-of-the-linked-list.php\">Add a new node at the end of the Linked List<\/a><\/h2>\n<p>  <\/p>\n<p>In this method, a new node is inserted at the end of the linked list. For example \u2014 if the given List is 10->20->30 and a new element 100 is added at the end, the Linked List becomes 10->20->30->100. <\/p>\n<p>  <\/p>\n<p>Inserting a new node at the end of the Linked List is very easy. First, a new node with given element is created. It is then added at the end of the list by linking the last node to the new node. <\/p>\n<p>  <img decoding=\"async\" alt=\"Linked List - Add Node At End\" src=\"https:\/\/www.alphacodingskills.com\/imgfiles\/linked-list-add-node-at-end.PNG\"\/>  <\/p>\n<p>The function <i>push_back<\/i> is created for this purpose. It is a <b>6-step process<\/b>.<\/p>\n<p>  <\/p>\n<pre><code class=\"php\">public function push_back($newElement) {      \/\/1. allocate node   $newNode = new Node();      \/\/2. assign data element   $newNode->data = $newElement;      \/\/3. assign null to the next of new node   $newNode->next = null;       \/\/4. Check the Linked List is empty or not,   \/\/   if empty make the new node as head    if($this->head == null) {     $this->head = $newNode;   } else {          \/\/5. Else, traverse to the last node     $temp = new Node();     $temp = $this->head;     while($temp->next != null) {       $temp = $temp->next;     }          \/\/6. Change the next of last node to new node     $temp->next = $newNode;   }     } <\/code><\/pre>\n<p>  <\/p>\n<p>The below is a complete program that uses above discussed all concepts of the linked list.<\/p>\n<p>  <\/p>\n<pre><code class=\"php\"> &lt;?php \/\/node structure class Node {   public $data;   public $next; }  class LinkedList {   public $head;    public function __construct(){     $this->head = null;   }      \/\/Add new element at the end of the list   public function push_back($newElement) {     $newNode = new Node();     $newNode->data = $newElement;     $newNode->next = null;      if($this->head == null) {       $this->head = $newNode;     } else {       $temp = new Node();       $temp = $this->head;       while($temp->next != null) {         $temp = $temp->next;       }       $temp->next = $newNode;     }       }    \/\/display the content of the list   public function PrintList() {     $temp = new Node();     $temp = $this->head;     if($temp != null) {       echo \"\\nThe list contains: \";       while($temp != null) {         echo $temp->data.\" \";         $temp = $temp->next;       }     } else {       echo \"\\nThe list is empty.\";     }   }     };  \/\/ test the code   $MyList = new LinkedList();  \/\/Add three elements at the end of the list. $MyList->push_back(10); $MyList->push_back(20); $MyList->push_back(30); $MyList->PrintList(); ?> <\/code><\/pre>\n<p>  <\/p>\n<p>The output of the above code will be:<\/p>\n<p>  <\/p>\n<pre><code class=\"php\">The list contains: 10 20 30  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/506660\/\"> https:\/\/habr.com\/ru\/articles\/506660\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>A linked list is a linear data structure, which contains node structure and each node contains two elements. A data part that stores the value at that node and next part that stores the link to the next node as shown in the below image:<\/p>\n<p>  <img decoding=\"async\" alt=\"Linked List Node\" src=\"https:\/\/www.alphacodingskills.com\/imgfiles\/linked-list-node-link.PNG\"\/>  <\/p>\n<p>The first node also known as HEAD is usually used to traverse through the linked list. The last node (next part of the last node) points to NULL. The list can be visualized as a chain of nodes, where every node points to the next node.<\/p>\n<p>  <img decoding=\"async\" alt=\"Linked List\" src=\"https:\/\/www.alphacodingskills.com\/imgfiles\/linked-list.PNG\"\/>  <\/p>\n<h2><a href=\"https:\/\/www.alphacodingskills.com\/cpp\/ds\/cpp-linked-list.php\">Implementation of Singly Linked List<\/a><\/h2>\n<p>  <\/p>\n<h2>Representation:<\/h2>\n<p>  <\/p>\n<p>In PHP, singly linked list can be represented as a class and a Node as a separate class. The LinkedList class contains a reference of Node class type. <\/p>\n<p>  <\/p>\n<pre><code class=\"php\">\/\/node structure class Node {   public $data;   public $next; }  class LinkedList {   public $head;    \/\/constructor to create an empty LinkedList   public function __construct(){     $this->head = null;   } }; <\/code><\/pre>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-389586","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/389586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=389586"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/389586\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=389586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=389586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=389586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}