• 【链表】在O(1)的时间删除链表的节点


     1 /**
     2  * 在O(1)的时间删除链表的节点
     3  * 
     4  * @author
     5  *
     6  */
     7 public class Solution {
     8 
     9     public static void deleteNode(Node head, Node deletedNode) {
    10         if (null == head || null == deletedNode) {
    11             return;
    12         }
    13 
    14         if (deletedNode.next != null) { // 删除的不是尾节点
    15 
    16             System.out.println("1-----");
    17 
    18             Node nextNode = deletedNode.next;
    19             deletedNode.value = nextNode.value;
    20             deletedNode.next = nextNode.next;
    21 
    22         } else if (head == deletedNode) { // 删除的是尾节点,同时尾节点也是头节点,整个链表只有一个节点
    23 
    24             System.out.println("2-----");
    25 
    26             head = null;
    27             deletedNode = null;
    28 
    29         } else { // 删除的是尾节点,但是链表不止一个节点
    30 
    31             System.out.println("3-----");
    32 
    33             // 遍历链表,找出尾节点的前一个节点,将next置为null
    34             Node pNode = head;
    35             while (pNode.next != deletedNode) {
    36                 pNode = pNode.next;
    37             }
    38 
    39             pNode.next = null;
    40             deletedNode = null;
    41         }
    42     }
    43 
    44     public static void main(String[] argss) {
    45 
    46         Node third = new Node(2, null);
    47         Node second = new Node(1, third);
    48         Node first = new Node(0, second);
    49 
    50         deleteNode(first, third);
    51 
    52     }
    53 }
    54 
    55 class Node {
    56 
    57     int value;
    58     Node next;
    59 
    60     public Node(int value, Node next) {
    61         this.value = value;
    62         this.next = next;
    63     }
    64 
    65 }
  • 相关阅读:
    Java1:Chapter3
    css3圆角和阴影效果
    css3兼容各版本浏览器前缀
    DOM
    数组方法
    Math方法
    JSON
    字符串方法
    日期对象
    定时器
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/5877643.html
Copyright © 2020-2023  润新知