• O(1)时间删除链表中的节点 13


    将当下一个节点的datanextNode拷贝到当前节点,即完成删除

       

    但不能用deleteNode=deleteNode.nextNode

       

    这样是让指针循环下移

       

    要求当前node不要后移,只要把后面的数据复制过来即可

       

    考虑首节点为空的情况

       

    考虑只有一个节点,删除头节点

       

    考虑有多个节点,删除尾节点,此时需要O(n)

       

    先循环找到deleteNode的前一个节点,让前一个节点的next置空

       

    考虑多个节点,删除中间节点

       

    将当下一个节点的data和nextNode拷贝到当前节点,即完成删除

       

    package deleteNode13;

       

    public class DeleteNode13 {

       

    static void deleteNode(ListNode head, ListNode deleteNode) {

    if (head == null) {

    System.out.println("list is empty,can't delete");

    return;

    }

    if (head.nextNode == null && deleteNode.equals(head)) {

    head = null;

    return;

    }

    if (deleteNode.nextNode == null) {

    ListNode node=head;

    while (node.nextNode!=deleteNode) {

    node=node.nextNode;

    }

    node.nextNode=null;

    return;

    }

    deleteNode.data = deleteNode.nextNode.data;

    deleteNode.nextNode=deleteNode.nextNode.nextNode;

       

    }

       

    public static void main(String[] args) {

    ListNode head=new ListNode();

    ListNode second=new ListNode();

    ListNode third=new ListNode();

    head.nextNode=second;

    second.nextNode=third;

    head.data=1;

    second.data=2;

    third.data=3;

    deleteNode(head, third);

    System.out.println(head.nextNode.nextNode.data);

    }

       

    }

       

    class ListNode {

    int data;

    ListNode nextNode;

       

    }

  • 相关阅读:
    MNIST手写字母识别(二)
    MNIST手写字母识别(一)
    多元线性回归问题(Tensorflow 求解)
    单变量线性回归问题(TensorFlow实战)
    TensorBoard可视化初步
    TensorFlow的基本运算
    NumPy科学计算库
    tensorflow使用Session模块时报错:AttributeError: module 'tensorflow' has no attribute 'Session',已解决
    Python 第一个爬虫
    Python(列表)
  • 原文地址:https://www.cnblogs.com/keedor/p/4385196.html
Copyright © 2020-2023  润新知