• 面试题18:在O(1)时间内删除链表节点。


    public class DeleteNode {
        public static void main(String[] args){
            Solution18 solution18 = new Solution18();
            ListNode18 head = solution18.initLinkList(new ListNode18());
            ListNode18 toBeDeleted = head;
            while(toBeDeleted.next!=null){
                toBeDeleted=toBeDeleted.next;
            }
            solution18.printLinkList(head);
            solution18.deleteNode(head,toBeDeleted);
            solution18.printLinkList(head);
        }
    }
    
    class ListNode18{
        int value;
        ListNode18 next;
    }
    
    class Solution18{
        //初始化链表
        ListNode18 initLinkList(ListNode18 head){
    
            ListNode18 p=head;
            p.value=-1;
            for(int i=0; i<10; i++){
                ListNode18 nextNode = new ListNode18();
                nextNode.value=i;
                p.next=nextNode;
                p=nextNode;
            }
            return head;
        }
        //打印链表
        void printLinkList(ListNode18 p){
            while (p.next!=null){
                System.out.print(p.value+ " ");
                p=p.next;
            }
            System.out.print(p.value);
            System.out.println();
        }
    
        void deleteNode(ListNode18 listHead,ListNode18 toBeDeleted){
    
            if(listHead ==null || toBeDeleted ==null){
                return;
            }
            //如果要删除的结点不是最后一个结点
            if(toBeDeleted.next!=null){
                ListNode18 listNode18= toBeDeleted.next;
                toBeDeleted.value=listNode18.value;
                toBeDeleted.next=listNode18.next;
                listNode18.next=null;
            }else if(listHead == toBeDeleted){//链表只有一个节点
                listHead=null;
                toBeDeleted=null;
            }else{//链表有多个节点,删除尾节点
                ListNode18 p=listHead;
                while(p.next != toBeDeleted){
                    p=p.next;
                }
                p.next=toBeDeleted.next;
                toBeDeleted.next=null;
            }
    
        }
    }
  • 相关阅读:
    Facebook发布神经蛋分离法,可从嘈杂环境中提取音视频
    前线观察 | AWS re:Invent 2018见闻实录
    SSO
    8-5 Navicat工具与pymysql模块
    saltstack
    nginx 集群介绍
    Docker 持久化存储
    Docker 多机网络
    《深入理解JAVA虚拟机》笔记1
    jquery 学习日记之选择器
  • 原文地址:https://www.cnblogs.com/Allen-win/p/8323915.html
Copyright © 2020-2023  润新知