Den Dribbles

PHP Linked List

January 17, 2019

This expects an installation on the system of phpunit.

Test File

Create linked_list_test.php:

<?php

require "linked-list.php";

class LinkedListTest extends PHPUnit\Framework\TestCase
{
    public function testInsertFirst()
    {
        $n1 = new Node(1);
        $n2 = new Node(2);
        $ll = new LinkedList($n1);
        $ll->insertFirst($n2);
        $this->assertEquals($ll->size, 2);
    }

    public function testGetFirst()
    {
        $n1 = new Node(1);
        $n2 = new Node(2);
        $ll = new LinkedList($n1);
        $ll->insertFirst($n2);
        $this->assertEquals($ll->size, 2);
        $this->assertEquals($ll->getFirst(), $n2);
    }
}

Linked List

Create linked_list.php:

<?php

class LinkedList {
    public $size = 0;
    public $head;

    function __construct($head = null) {
        $this->head = $head;

        if ($head != null) {
            $this->size = 1;
        } else {
            $this->size = 0;
        }
    }

    public function insertFirst($n) {
        if ($this->head != null) {
            $tmp = $this->head;
            $this->head = $n;
            $n->setNext($tmp);
        } else {
            $this->head = $n;
        }
        $this->size++;
    }

    public function getFirst() {
        return $this->head;
    }
}

class Node {
    private $data;
    private $next;

    function __construct($data = null) {
        $this->data = $data;
    }

    public function getData() {
        return $this->data;
    }

    public function setData($data) {
        $this->data = $data;
    }

    public function getNext() {
        return $this->next;
    }

    public function setNext($next) {
        $this->next = $next;
    }
}

Running Tests

Change into directory and run phpunit.phar linked_list_test.php.


A personal blog on all things of interest. Written by Dennis O'Keeffe, Follow me on Twitter