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;
            }

        }

    }

  • 相关阅读:
    读《大道至简》有感
    软件工程概论第一次课堂作业
    课后小程序
    继承与多态课后作业
    课后作业2-字符串
    课后作业1:字串加密
    3-类与对象-动手动脑
    使用类的静态字段和构造函数,跟踪某个类所创建对象的个数。
    课程作业02-1-课后作业1-(3、4)汉诺塔、回文数
    课程作业02-2-动手动脑
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/8179423.html
Copyright © 2011-2022 走看看