单链表
单链表顾名思义就是一个链式数据结构,它有一个表头(Head),本身不存储数据, 只是用来指向第一个节点的指针, 每个节点有两个元素, 一个为data
, 用来存储数据, 一个为next
, 用来存储下一个节点的地址, 最后一个节点的next
指向null
, 如下图:
php实现
用php实现单外链表, 首先我们要定义一个节点类, 用来保存链表节点
再定义一个链表类, 操作节点元素, 代码如下:
节点类
/**
* Class Node
* 链表元素
*/
class Node {
/**
* 存储链表元素数据
* @var string Node data
*/
public $data = '';
/**
* 指向下一个元素的地址
* @var self next Node
*/
public $next = null;
/**
* 构造方法, 自动插入数据
* @param $data
* @param null $next
*/
public function __construct($data, $next = null)
{
$this->data = $data;
$this->next = $next;
}
}
链表类
该链表实现了添加,删除,更新,头部插入,获取元素, 清空链表, 返回链表元素等等方法, 请自行查看代码
/**
* Class SingleLinkedList
* 单链表
*/
class SingleLinkedList {
/**
* 头指针, 指向第一个元素, 本身变不存储数据
* @var Node head->next = First Node
*/
public $head;
/**
* 链表长度
* @var int Linked list Length
*/
public $length = 0;
/**
* 构造方法, 用来插入头指针
* SingleLinkedList constructor.
*/
public function __construct()
{
$this->head = new Node(null);
}
/**
* 插入数据, 返回$this可链式调用
* @param $data
* @return $this
*/
public function insert($data)
{
$current = $this->head;
while ($current->next !== null) {
$current = $current->next;
}
$current->next = new Node($data);
$this->length ++;