zoukankan      html  css  js  c++  java
  • 19.删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.
    
    当删除了倒数第二个节点后,链表变为 1->2->3->5.
     1     private class ListNode {
     2         int val;
     3         ListNode next;        
     4         ListNode(int x) {
     5             val = x;
     6         }
     7     }
     8     //方法一:第一次遍历得到链表的长度L,根据长度值获取顺数的第L-n+1个节点;第二次遍历删除
     9     public ListNode removeNthFromEnd1(ListNode head, int n) {
    10         ListNode current = head;
    11         int len = 0;
    12         while(current != null){
    13             len++;
    14             current = current.next;
    15         }
    16         int del = len - n;  //被删除节点的前一个节点
    17         int i = 1;
    18         current = head;
    19         while(true) {
    20             if(del == 0) {  //删除首节点情况
    21                 return head = head.next;
    22             }
    23             if(i == del) { //定位到删除节点前一节点,删除其他节点情况
    24                 current.next = current.next.next;
    25                 return head;
    26             }
    27             current = current.next;
    28             i++;
    29         }
    30     }
    31     //方法二:一次遍历,得到链表长度,同时使用postOrder节点记录倒数的第N+1个节点,然后直接删除第N个节点
    32     public ListNode removeNthFromEnd2(ListNode head, int n) {
    33         ListNode preOrder = head;
    34         ListNode postOrder = head;
    35         int len = 0;
    36         while(preOrder != null) {
    37             len++;
    38             if(len > n+1) {  //记录倒数的第N+1个节点
    39                 postOrder = postOrder.next;
    40             }
    41             preOrder = preOrder.next;
    42         }
    43         if(len == n) {  //删除头结点情况
    44             head = head.next;
    45         }else {            //删除非头结点
    46             postOrder.next = postOrder.next.next;
    47         }
    48         return head;
    49     }

     

    
    
    无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
  • 相关阅读:
    display
    盒子模型
    css样式
    修改页面标题前的图标
    form表单
    html中列表
    代码书写格式
    dw中的超链接
    硬盘的访问,程序重定位和加载
    Bochs调试指令
  • 原文地址:https://www.cnblogs.com/xiyangchen/p/10848963.html
Copyright © 2011-2022 走看看