Insert node at end of linked list in php

Write a program which is create and add linked list node at the end (tail, last) position in php.

Suppose we are inserted the following (10, 20, 30 ,40 ,50) node in a sequence.

insert node at end of linked list
<?php
// Php Program for
// Insert linked list element at end position set A

// Linked list node
class LinkNode
{
    public $data;
    public $next;
    public function __construct($data)
    {
        $this->data = $data;
        $this->next = NULL;
    }
}
class SingleLL
{
    public $head;
    public function __construct()
    {
        $this->head = NULL;
    }
    // Add new node at the end of linked list
    public function addNode($value)
    {
        // Create new node
        $node = new LinkNode($value);
        if ($this->head == NULL)
        {
            $this->head = $node;
        }
        else
        {
            $temp = $this->head;
            // Find the last node
            while ($temp->next != NULL)
            {
                // Visit to next node
                $temp = $temp->next;
            }
            // Add node at last position
            $temp->next = $node;
        }
    }
    // Display all Linked List elements
    public
    function display()
    {
        if ($this->head != NULL)
        {
            $temp = $this->head;
            while ($temp != NULL)
            {
                // Display node value
                echo("  ".$temp->data);
                // Visit to next node
                $temp = $temp->next;
            }
        }
        else
        {
            echo("Empty Linked list\n");
        }
    }
}

function main()
{
    $sll = new SingleLL();
    // Linked list
    // 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → NULL
    $sll->addNode(1);
    $sll->addNode(2);
    $sll->addNode(3);
    $sll->addNode(4);
    $sll->addNode(5);
    $sll->addNode(6);
    $sll->addNode(7);
    $sll->addNode(8);
    echo(" Linked List \n");
    $sll->display();
}
main();
 Linked List
  1  2  3  4  5  6  7  8

Time complexity of above program is O(n). We can optimize above algorithm using one extra pointer. Which is hold the reference of last node. Below are implementation of this logic.

<?php
// Php Program for
// Insert linked list element at end position set B

// Linked list node
class LinkNode
{
    public $data;
    public $next;
    public  function __construct($data)
    {
        $this->data = $data;
        $this->next = NULL;
    }
}
class SingleLL
{
    public $head;
    public $tail;
    public  function __construct()
    {
        $this->head = NULL;
        $this->tail = NULL;
    }
    // Add new node at the end of linked list
    public  function addNode($value)
    {
        // Create a new node
        $node = new LinkNode($value);
        if ($this->head == NULL)
        {
            $this->head = $node;
        }
        else
        {
            $this->tail->next = $node;
        }
        $this->tail = $node;
    }
    // Display linked list element
    public  function display()
    {
        if ($this->head == NULL)
        {
            return;
        }
        $temp = $this->head;
        // iterating linked list elements
        while ($temp != NULL)
        {
            echo(" ".$temp->data.
                " →");
            // Visit to next node
            $temp = $temp->next;
        }
        echo(" NULL\n");
    }
}

function main()
{
    $sll = new SingleLL();
    // Linked list
    // 10 → 20 → 30 → 40 → 50 → NULL
    $sll->addNode(10);
    $sll->addNode(20);
    $sll->addNode(30);
    $sll->addNode(40);
    $sll->addNode(50);
    echo(" Linked List \n");
    $sll->display();
}
main();
 Linked List
 10 → 20 → 30 → 40 → 50 → NULL

Time complexity of above program is O(1).



Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment







© 2021, kalkicode.com, All rights reserved