博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[PHP] 数据结构-反转链表PHP实现
阅读量:6994 次
发布时间:2019-06-27

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

1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头

2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头
3.old->next不能直接指向new,而是应该设置一个临时指针tmp,指向old->next指向的地址空间,保存原链表数据,然后old->next指向new,new往前移动到old处new=old,最后old=tmp取回数据
while(old!=null){
  tmp=old->next
  old->next=new
  new=old
  old=tmp
}

next=null;//头结点for($i=1;$i<=10;$i++){ $node=new Node(); $node->data="aaa{
$i}";//创建新结点$node $node->next=$linkList->next;//$node->next指向头结点->next $linkList->next=$node;//头结点->next指向$node}var_dump($linkList);function ReverseList($pHead){ $old=$pHead->next;//跳过头结点 $new=null; $tmp=null; //反转过程 while($old!=null){ $tmp=$old->next; $old->next=$new; $new=$old; $old=$tmp; } //给新链表加个头结点 $newHead=new Node(); $newHead->next=$new; var_dump($newHead);}ReverseList($linkList);
object(Node)#1 (2) {
["data"]=> NULL ["next"]=> object(Node)#11 (2) {
["data"]=> string(5) "aaa10" ["next"]=> object(Node)#10 (2) {
["data"]=> string(4) "aaa9" ["next"]=> object(Node)#9 (2) {
["data"]=> string(4) "aaa8" ["next"]=> object(Node)#8 (2) {
["data"]=> string(4) "aaa7" ["next"]=> object(Node)#7 (2) {
["data"]=> string(4) "aaa6" ["next"]=> object(Node)#6 (2) {
["data"]=> string(4) "aaa5" ["next"]=> object(Node)#5 (2) {
["data"]=> string(4) "aaa4" ["next"]=> object(Node)#4 (2) {
["data"]=> string(4) "aaa3" ["next"]=> object(Node)#3 (2) {
["data"]=> string(4) "aaa2" ["next"]=> object(Node)#2 (2) {
["data"]=> string(4) "aaa1" ["next"]=> NULL } } } } } } } } } }}object(Node)#12 (2) {
["data"]=> NULL ["next"]=> object(Node)#2 (2) {
["data"]=> string(4) "aaa1" ["next"]=> object(Node)#3 (2) {
["data"]=> string(4) "aaa2" ["next"]=> object(Node)#4 (2) {
["data"]=> string(4) "aaa3" ["next"]=> object(Node)#5 (2) {
["data"]=> string(4) "aaa4" ["next"]=> object(Node)#6 (2) {
["data"]=> string(4) "aaa5" ["next"]=> object(Node)#7 (2) {
["data"]=> string(4) "aaa6" ["next"]=> object(Node)#8 (2) {
["data"]=> string(4) "aaa7" ["next"]=> object(Node)#9 (2) {
["data"]=> string(4) "aaa8" ["next"]=> object(Node)#10 (2) {
["data"]=> string(4) "aaa9" ["next"]=> object(Node)#11 (2) {
["data"]=> string(5) "aaa10" ["next"]=> NULL } } } } } } } } } }}

 

转载于:https://www.cnblogs.com/taoshihan/p/9590730.html

你可能感兴趣的文章
开源 java CMS - FreeCMS2.4 建站向导
查看>>
C++ const总结
查看>>
mycncart1.1.0.0 发布
查看>>
修改django-模型方法
查看>>
小团队项目搭建代码管理工具 gitlab8.9以及项目管理工具redmine 3.3 安装配置指南...
查看>>
Windows 8/Windows 8.1镜像安装Microsoft .NET Framework 3.5的方法
查看>>
ajaxFileUpload+ThinkPHP+jqGrid 图片上传与显示
查看>>
Python 元类
查看>>
IO流文件拷贝性能对比
查看>>
mac下更新自带的PHP版本到5.6或7.0
查看>>
Oracle——10用户自定义函数
查看>>
硬盘空间满导致mysql ibd文件被删后提示Tablespace is missing for table 'db_rsk/XXX"
查看>>
Scala之初步认识与环境准备
查看>>
JFinal跨域方法的两种实现
查看>>
数据库根据字段模糊查询的思路
查看>>
基于IOS上MDM技术相关资料整理及汇总
查看>>
HBase新建表报错 org.apache.hadoop.hbase.TableExistsException
查看>>
微信小程序教程、微信小程序开发资源下载汇总(6.16日更新,持续更新中……)...
查看>>
解决eclipse莫名其妙退出问题
查看>>
MySQL mysqli_connect() 不能连接数据库问题
查看>>