<?php
/*** Created by PhpStorm.* User: huizhou* Date: 2018/12/1* Time: 11:41*//*** 1.链表的反转* Class Node*/
class Node
{private $value;private $next;public function __construct($value = null){$this->value = $value;}public function getValue(){return $this->value;}public function setValue($value){$this->value = $value;}public function getNext(){return $this->next;}public function setNext($next){$this->next = $next;}
}// 遍历方式,将当前节点的下一个节点缓存后更改成当前节点指针function reverse(Node $head){if($head == null){return $head;}$pre = $head; // 取出head节点$cur = $head->getNext(); // 把当前节点指向下一个节点$next = null;while($cur != null){$next = $cur->getNext();$cur->setNext($pre); // 把当前节点的指针指向前一个节点$pre = $cur;$cur = $next;}// 将原链表的头节点的下一个节点设置为null,再把反转后的头节点赋给head$head->setNext(null);$head = $pre;return $head;}// 递归实现,在反转当前节点之前先反转后续节点function reverse2(Node $head){if($head == null || $head->getNext() == null){return $head;}$reversedHead = reverse2($head->getNext());$head->getNext()->setNext($head);$head->setNext(null);return $reversedHead;}function test(){$head = new Node(0);$tmp = null;$cur = null;// 构造一个长度为10的链表,保存头节点对象headfor ($i = 1;$i < 10 ; $i++){$tmp = new Node($i);if ($i == 1){$head->setNext($tmp);}else{$cur->setNext($tmp);}$cur = $tmp;}$tmpHead = $head;while ($tmpHead != null){echo $tmpHead->getValue();$tmpHead = $tmpHead->getNext();}echo "\n";$head = reverse2($head);while ($head != null ){echo $head->getValue();$head = $head->getNext();}}test();

转载于:https://www.cnblogs.com/mrszhou/p/10053307.html

php链表笔记:单链表反转相关推荐

  1. 【数据结构与算法】 01 链表 (单链表、双向链表、循环链表、块状链表、头结点、链表反转与排序、约瑟夫环问题)

    一.线性表 1.1 概念与特点 1.2 线性表的存储结构 1.3 常见操作 1.4 应用场景 二.链表 2.1 链表简介 2.2 单向链表(单链表) 2.21 基本概念 2.22 单链表基本操作 2. ...

  2. 单链表删除所有值为x的元素_C/C++编程笔记:如何使用C++实现单链表?单链表的基本定义...

    如何弥补顺序表的不足之处? 第一次学习线性表一定会马上接触到一种叫做顺序表(顺序存储结构),经过上一篇的分析顺序表的优缺点是很显然的,它虽然能够很快的访问读取元素,但是在解决如插入和删除等操作的时候, ...

  3. python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例

    本文实例讲述了Python实现数据结构线性链表(单链表)算法.分享给大家供大家参考,具体如下: 初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码. #!/usr/bin ...

  4. python之链表、单链表、双向链表、单向循环链表

    python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...

  5. 数据结构5: 链表(单链表)的基本操作及C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储. 由于分散存储,为了能够体现出数据元素之间的逻辑关 ...

  6. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  7. php mysql 链表_浅谈PHP链表数据结构(单链表)

    链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区, ...

  8. c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...

    最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...

  9. 线性表:3.链表,单链表详解与C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为 线性表的链式存储 . 由于分散存储,为了能够体现出数据元素之间的逻 ...

  10. C语言丨线性表(二):线性链表(单链表)

    线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...

最新文章

  1. Linux下gcov和lcov代码覆盖率分析(C/C++覆盖率在NGINX测试中的应用)
  2. k8s pod的三类调度策略:资源限制策略、nodeSelector标签选择器、硬/软亲和性
  3. ios realm 文件_iOS开发中使用Realm数据库
  4. 【译】数据结构中关于树的一切(java版)
  5. .net里鼠标选中的text数据怎么获取_数据快速对比,这个快捷键你都不会,难怪要加班...
  6. iOS 开发线程 gcd
  7. 1.[数据结构和算法分析笔记]数组
  8. MySQL 的DDL DML DQL DCL细节解析 知道这些就够了
  9. poj 1703 并查集
  10. 2019年上海交通大学816自动控制理论考研经验分享
  11. Catia抛物线建模_基于CATIA的方程曲线设计建模研究
  12. 国外服务器修改dns地址,怎样设置国外DNS国外DNS服务器域名解析方法.doc
  13. 解决:点击鼠标右键无新建选项卡
  14. 降采样滤波器 matlab,降采样FIR滤波器的设计与硬件实现
  15. 计算机进入不了管理器,电脑没有桌面且任务管理器打不开怎么办
  16. 考公 | 粉笔网课笔记——数量 刘凯
  17. python : Tkinter布局
  18. 工作第十四周:整理收藏夹、旧文章有感
  19. 这样干前端你早该考虑离职了
  20. chinese input

热门文章

  1. 条形码?二维码?生成、解析都在这里!
  2. 2021-2027年中国中高端女装行业市场分析预测及投资方向研究报告
  3. python中的raw string的使用
  4. Eclipse的编码
  5. 【数据结构】链表中的 指针,地址
  6. pykafka连接重要使用pykafka,kafka-python的api开发kafka生产者和消费者
  7. pytorch BiLSTM+CRF代码详解 重点
  8. tensorflow op tf.global_variables_initializer
  9. PyTorch中文文档 说明书
  10. LeetCode简单题之基于排列构建数组