博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现一个单链表
阅读量:6909 次
发布时间:2019-06-27

本文共 1381 字,大约阅读时间需要 4 分钟。

单链表,节点只有一个指针域的链表。节点包括数据域和指针域。

  因此用面向对象的思维,节点类的属性就有两个:一个data(表示存储的数据),一个指针next(链表中指向下一个节点)。

  链表一个很重要的特性,就是这个头节点$head。它绝对不能少,每次遍历都要从它开始,并且不能移动头节点,应该用一个变量去代替他移动。脑袋里要有链表的结构。这是关键。

  来一段代码:

data = $data; }}// 链表有几个元素function countNode($head){ $cur = $head; $i = 0; while(!is_null($cur->next)){ ++$i; $cur = $cur->next; } return $i;}// 增加节点function addNode($head, $data){ $cur = $head; while(!is_null($cur->next)){ $cur = $cur->next; } $new = new Node($data); $cur->next = $new;}// 紧接着插在$no后function insertNode($head, $data, $no){ if ($no > countNode($head)){ return false; } $cur = $head; $new = new Node($data); for($i=0; $i<$no;$i++){ $cur = $cur->next; } $new->next = $cur->next; $cur->next = $new;}// 删除第$no个节点function delNode($head, $no){ if ($no > countNode($head)){ return false; } $cur = $head; for($i=0; $i<$no-1; $i++){ $cur = $cur->next; } $cur->next = $cur->next->next;}// 遍历链表function showNode($head){ $cur = $head; while(!is_null($cur->next)){ $cur = $cur->next; echo $cur->data, '
'; }}$head = new Node(null);// 定义头节点addNode($head, 'a');addNode($head, 'b');addNode($head, 'c');insertNode($head, 'd', 0);showNode($head);echo '

';delNode($head, 2);showNode($head);

 

转载于:https://www.cnblogs.com/rxbook/p/10338517.html

你可能感兴趣的文章
使用CodePush实时更新 React Native 和 Cordova 应用
查看>>
jstree -- 使用JSON 数据组装成树
查看>>
C++读取INI文件
查看>>
Win2003服务器安装Sql Server 2008 (转)
查看>>
2的倍数相加后如何还原
查看>>
W3C 、HTML 、CSS 发展介绍
查看>>
JS实现点击跳转登陆邮箱
查看>>
Alexandra and Prime Numbers(思维)
查看>>
jQuery hover 延时器实现代码
查看>>
ArcGIS JS 学习笔记3 实现百度风格的BubblePopup
查看>>
JavaScript之字符串引号的使用技巧
查看>>
linux如何关闭selinux?
查看>>
初识CSS
查看>>
Android开发常用代码片段
查看>>
微信小程序使用场景及取名“潜”规则
查看>>
Atitit nodejs5 nodejs6 nodejs 7.2.1 新特性attialx总结
查看>>
回顾 git 常用命令
查看>>
第四章 Spring.Net 如何管理您的类___统一资源访问接口
查看>>
最大流+最小费用最大流
查看>>
java-mybaits-00103-入门程序原生的【查、增、删、改】
查看>>