zoukankan      html  css  js  c++  java
  • 删除链表中倒数第n个节点

    描述

    给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。

    链表中的节点个数大于等于n

    样例

    给出链表1->2->3->4->5->null和 n = 2.

    删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

    挑战

    O(n)时间复杂度

    思路

    要删除倒数第n个节点,我们就要找到其前面一个节点,也就是倒数第n+1个节点,找到这个节点就可以进行删除
    定义两个指针,p和cur,cur指针向前走,走了n+1步之后,p指针开始走,当cur指针走到链表结尾的时候,p指针刚好走到倒数第n+1个节点处

    代码

     1 <?php
     2 //删除链表中倒数第n个节点,返回链表的头节点
     3 
     4 class Node
     5 {
     6     public $value;
     7     public $next = null;
     8     
     9     public function __construct($value)
    10     {
    11         $this->value = $value;
    12     }
    13 }
    14 
    15 /**
    16  * @param $node 头节点
    17  * @param $n 倒数第几个节点
    18  * 思路:要删除倒数第n个节点,我们就要找到其前面一个节点,也就是倒数第n+1个节点,找到这个节点就可以进行删除
    19  * 定义两个指针,p和cur,cur指针向前走,走了n+1步之后,p指针开始走,当cur指针走到链表结尾的时候,p指针刚好走到倒数第n+1个节点处
    20  */
    21 function delete($node, $n = 2)
    22 {
    23     if(empty($node))
    24     {
    25         return $node;
    26     }
    27     $header = new node(0);
    28     $header->next = $node;//头节点不能丢失(有可能是删除头节点)
    29     $cur = $node;
    30     $p = $node;//n的个数比节点数大时,删除第一个节点
    31     //cur指针先移动n步
    32     for($i=0; $i<$n; $i++)
    33     {
    34         $cur = $cur->next;
    35     }
    36     
    37     //找到倒数第n+1个节点
    38     while($cur->next != null)
    39     {
    40         $cur = $cur->next;
    41         $p = $p->next;
    42     }
    43     
    44     //删除
    45     $p->next = $p->next->next;
    46     return $header->next;
    47 }
    48 
    49 //创建链表可封装成一个方法
    50 $A = new Node(1);
    51 $B = new Node(2);
    52 $C = new Node(3);
    53 $D = new Node(4);
    54 $E = new Node(5);
    55 $A->next = $B;
    56 $B->next = $C;
    57 $C->next = $D;
    58 $D->next = $E;
    59 
    60 echo "<pre>";
    61 print_r(delete($A, 2));
  • 相关阅读:
    团队项目第一阶段冲刺站立会议(5月10日)
    团队项目第一阶段冲刺站立会议(5月9日)
    团队项目第一阶段冲刺站立会议(5月7日)
    课堂练习之找数字0-N中“1”出现的次数
    团队开发项目-----来用------项目风险分析
    《你的灯亮着吗》阅读笔记之第五篇与第六篇
    《你的灯亮着吗》阅读笔记之第三篇与第四篇
    《你的灯亮着吗》阅读笔记之第一篇与第二篇
    课堂练习之检测水军(拓展)
    课后作业之输入法评价
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/9446109.html
Copyright © 2011-2022 走看看