zoukankan      html  css  js  c++  java
  • 删除链表中的一个节点

    /*
     * 在O(1)的时间内进行删除 分析:如果从前到后进行遍历查找从而进行删除节点,其时间复杂度为O(n)所以行不通
     * 正确方法是:进行覆盖pToBeDelete节点,其.next覆盖
     */
    public class 删除链表中的节点
    {
        private static void deleteListNOde(ListNode head,
                ListNode toBeDeleteListNode)
        {
            if (head == null || toBeDeleteListNode == null)
            {
                return;
            }
            // 要删除的节点不是尾节点
            if (toBeDeleteListNode.next != null)
            {
                // 进行覆盖
                ListNode tempNode = toBeDeleteListNode.next;
                toBeDeleteListNode.value = tempNode.value;
                toBeDeleteListNode.next = tempNode.next;
                tempNode = null;
            }
            else if (head == toBeDeleteListNode)
            {// 链表只有一个节点,删除头节点也是尾节点
                toBeDeleteListNode = null;
                head = null;
            }
            else
            {// 删除尾节点
                // 先到到toBeDeleteListNode的前一个节点
                ListNode tempNode = head;
                while (tempNode.next != toBeDeleteListNode)
                {
                    tempNode = tempNode.next;
                }
                tempNode.next = null;
            }

        }

    }

  • 相关阅读:
    TCP报文
    TCP概述
    UDP
    传输层概述
    端口地址转换 PAT
    网络地址转换NAT原理介绍
    js的时间处理函数
    正则表达式相关笔记
    微信小程序实现图片拖拽
    在React中使用less
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/8179423.html
Copyright © 2011-2022 走看看