PHP 实现常用数据结构之链表

最近在恶补数据结构相关的知识,看到链表相关的一些算法,就用 PHP 简单实现了单链表的创建。

添加节点相关类:

<?phpnamespace App\Libraries;class ListNode{    //节点数据域    public $data;    //节点指针域    public $next;    //构建节点    public function __construct($data = null, $next = null)    {        $this->data = $data;        $this->next = $next;    }}

单链表相关操作类:

<?phpnamespace App\Libraries;class SingleLinkList{    //头部插入建立单链表    public function headInsert($n)    {        //新建头结点        $head = new ListNode();        for ($i=$n; $i > 0; $i--) {             //添加节点            $newNode = new ListNode($i, $head->next);            $head->next = $newNode;        }        return $head;    }    //尾部插入建立单链表    public function tailInsert($n)    {        //新建头尾节点,指向同一个节点        $head = $tail = new ListNode();        for ($i=1; $i <= $n; $i++) {             //添加节点            $newNode = new ListNode($i);            //将尾结点指针指向新的节点            $tail->next = $newNode;            //将新节点标记为尾结点            $tail = $newNode;        }        return $head;    }}

使用

<?phpnamespace App\Http\Controllers;// use Illuminate\Http\Request;use App\Libraries\SingleLinkList;class IndexController extends Controller{    public function index ()    {        $list = new SingleLinkList();        dd($list->headInsert(10));        //dd($list->tailInsert(10));    }}

更多相关文章

  1. jQuery的DOM操作实例(3)——创建节点&&编写一个弹窗
  2. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  3. 如何在java脚本中获取节点内部文本?
  4. 用replaceWith()对DOM结点操作时应注意的问题
  5. Study JQuery《zTree自动点击第一个节点》
  6. 如何使用ajax GET或POST方法将数据传递到amazon lambda节点。js
  7. jQuery.zTree 点击节点展开折叠子节点
  8. easyui-tree根据叶子节点获取父节点值(N层)
  9. PHP递归函数删除所有子节点导致stackoverflow

随机推荐

  1. Nginx在Linux下配置的详细说明及配置方法
  2. Linux中mprotect()函数的用法
  3. Linux cat 命令源码剖析
  4. Apache性能调节(摘自于Apache经典实例)
  5. Linux搭载ISO镜像为本地yum源
  6. Linux内存管理 (10)缺页中断处理
  7. linux shell脚本指令
  8. PowerPC平台 linux移植一
  9. Linux 软件安装到 /usr,/usr/local/ 还是
  10. 请问有谁知道linux上生成的共享库中,使用n