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

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

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

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

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

  来一段代码:

  

1 
data = $data; 9 }10 }11 12 13 // 链表有几个元素14 function countNode($head){15 $cur = $head;16 $i = 0;17 while(!is_null($cur->next)){18 ++$i;19 $cur = $cur->next;20 }21 return $i;22 }23 24 // 增加节点25 function addNode($head, $data){26 $cur = $head;27 while(!is_null($cur->next)){28 $cur = $cur->next;29 }30 $new = new Node($data);31 $cur->next = $new;32 33 }34 35 // 紧接着插在$no后36 function insertNode($head, $data, $no){37 if ($no > countNode($head)){38 return false;39 }40 $cur = $head;41 $new = new Node($data);42 for($i=0; $i<$no;$i++){43 $cur = $cur->next;44 }45 $new->next = $cur->next;46 $cur->next = $new;47 48 }49 50 // 删除第$no个节点51 function delNode($head, $no){52 if ($no > countNode($head)){53 return false;54 }55 $cur = $head;56 for($i=0; $i<$no-1; $i++){57 $cur = $cur->next;58 }59 $cur->next = $cur->next->next;60 61 }62 63 // 遍历链表64 function showNode($head){65 $cur = $head;66 while(!is_null($cur->next)){67 $cur = $cur->next;68 echo $cur->data, '
';69 }70 }71 72 $head = new Node(null);// 定义头节点73 74 75 addNode($head, 'a');76 addNode($head, 'b');77 addNode($head, 'c');78 79 insertNode($head, 'd', 0);80 81 showNode($head);82 83 echo '

';84 85 delNode($head, 2);86 87 showNode($head);

 

转载于:https://www.cnblogs.com/firstForEver/p/5245534.html

你可能感兴趣的文章
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
GDOI DAY1游记
查看>>
MyBaits动态sql语句
查看>>
HDU4405(期望DP)
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
mysql基础语句
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
SDN第四次作业
查看>>
django迁移数据库错误
查看>>
yii 跳转页面
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>