1 <?php
 2     #查找链表倒数第i个节点,倒数第0个为最后一个节点
 3     class Node {
 4         public $data = null;
 5         public $next = null;
 6     }
 7
 8     #第一种方法,先算出链表总长,然后向后寻找n-i个节点
 9     function last_i($head, $i) {
10         $cnode = $head;
11         $n = 0;
12         while ($cnode != null) {
13             $n++;
14             $cnode = $cnode->next;
15         }
16
17         $j = 1;
18         $cnode = $head;
19         while ($j < $n - $i) {
20             $j++;
21             $cnode = $cnode->next;
22         }
23
24         return $cnode;
25     }
26
27     #第二种方法,使用两个指针同时移动
28     function last_i_2($head, $i) {
29         $p1 = $head;
30         $p2 = $head;
31         $k = 0;
32
33         while ($k < $i) {
34             $p1 = $p1->next;
35             $k++;
36         }
37
38         while (($p1 = $p1->next) != null) {
39             $p2 = $p2->next;
40         }
41
42         return $p2;
43     }
44
45     $head = new Node();
46     $n1 = new Node();
47     $n2 = new Node();
48     $n3 = new Node();
49     $n4 = new Node();
50     $head->data = 0;
51     $n1->data = 1;
52     $n2->data = 2;
53     $n3->data = 3;
54     $n4->data = 4;
55     $head->next = $n1;
56     $n1->next = $n2;
57     $n2->next = $n3;
58     $n3->next = $n4;
59
60     echo last_i($head, 2)->data . "<br>";
61     echo last_i_2($head, 2)->data;
62 ?>

2
2

转载于:https://www.cnblogs.com/zemliu/archive/2012/10/01/2709899.html

PHP 查找链表倒数第i个节点相关推荐

  1. c++链表获取长度,链表翻转,查找链表倒数第K个节点以及中间点

    c++链表获取长度,链表翻转, 查找链表倒数第K个节点以及中间点 测试数据 ListNode* pHead = new ListNode();pHead->m_key = 1;ListNode* ...

  2. 单链表倒数第K个节点的查找和显示

    单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...

  3. 链表之删除双链表倒数第K个节点

    链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点   思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280 ...

  4. 链表之删除单链表倒数第K个节点

    删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路:             给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6     K值是 ...

  5. python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

    题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...

  6. java链表的输出_Java输出链表倒数第k个节点

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  7. 剑指Offer之寻找链表倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 代码及解析 用的快慢指针的思路 public class FindKthValue {static public class ListNode { ...

  8. 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点

    实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值.注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k ...

  9. 输出链表倒数第K个节点

    题目 输入一个单向链表,输出该链表中倒数第 k  个结点.链表的倒数第 0  个结点为链表的尾指针. 思路 算是比较简单的题目了. 解法一: 可以先遍历一遍统计链表个数,然后找到倒数第k个的下标再遍历 ...

最新文章

  1. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...
  2. linux c pid获取进程名 进程名获取pid
  3. 机器学习基本概念-阿里云大学
  4. 查看mysql 默认端口号和修改端口号
  5. Linux 命令之 --[chattr]
  6. 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
  7. 正则验证IP、掩码、端口
  8. BP神经网络分类实例(神经网络编程入门 )
  9. Ubunbu新建的用户使用SecureCrt无法Table补全、无法高亮
  10. 使用@Transactional(SUPPORTS)和不加@Transactional 有什么区别?
  11. cls image.php,Ecshop安装过程中的的相关问题:cls_image::gd_version()和不支持JPEG_PHP教程...
  12. 计算机离散数学视频教程,离散数学(全105讲)【理工学社】
  13. html文件用excel打开乱码,都是兼容惹的祸 用excel打开xls文件出现乱码的解决方法...
  14. 智慧环卫管理系统解决方案
  15. Elasticsearch:Dissect 和 Grok 处理器之间的区别
  16. Cisco测试命令和TCP/IP连接故障处理整理集合
  17. navigationController的一些用法
  18. Dcloud H5+微信登录功能
  19. 计算机图形设计论文 真实图形生成技术的发展,计算机图形设计论文真实图形生成技术的发展.docx...
  20. 图像处理的仿射变换与透视变换

热门文章

  1. java 微信证书文件,CertificateDownloader
  2. java thread start0_Java: Thread类中start()和run()的区别
  3. python sys.path.append()添加路径_Python调用CST进行天线建模仿真:环境搭建指南
  4. java 序列化异常_关于spring:Java序列化异常消息
  5. 两个pv挂一个vg_两个pv挂一个vg_VG解散LOL分部,LPL官网提前改名,下赛季被“RA”收购...
  6. 树莓派智能家居-语音聊天机器人实现
  7. Python适合自己的IDE才是最好的IDE
  8. 《只是为了好玩-Linux之父Linus自传》
  9. php递归简单例子,php递归json类实例
  10. python输入多个数字 找出只出现一个的数字_在python数组中找到接近给定数字的多个值...