PHP - Insert a new node at the end of the Doubly Linked List
In this method, a new node is inserted at the end of the doubly linked list. For example - if the given List is 10->20->30 and a new element 100 is added at the end, the List becomes 10->20->30->100.
Inserting a new node at the end of the doubly 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.
The function push_back is created for this purpose. It is a 6-step process.
public function push_back($newElement) { //1. allocate node $newNode = new Node(); //2. assign data element $newNode->data = $newElement; //3. assign null to the next and prev // of the new node $newNode->next = null; $newNode->prev = null; //4. Check the 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. Adjust the links $temp->next = $newNode; $newNode->prev = $temp; } }
The below is a complete program that uses above discussed concept to insert new node at the end of the doubly linked list.
<?php //node structure class Node { public $data; public $next; public $prev; } 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; $newNode->prev = 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; $newNode->prev = $temp; } } //display the content of the list public function PrintList() { $temp = new Node(); $temp = $this->head; if($temp != null) { echo "The list contains: "; while($temp != null) { echo $temp->data." "; $temp = $temp->next; } echo "\n"; } else { echo "The list is empty.\n"; } } }; // 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(); ?>
The above code will give the following output:
The list contains: 10 20 30