zoukankan      html  css  js  c++  java
  • 面试题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;
            }
    
        }
    }
  • 相关阅读:
    Windows 10 Shell Commands
    scala spark streaming 打印kafka 数据
    Kafka 与 Flume 如何选择
    Scala map中下划线_._2的含义
    Spark中reduceByKey(_+_)的说明
    spark 内存设置
    windows spark3.1 hdfs 测试
    @Autowired、@Resource、和@Service注解详解
    Python 打印对象
    Python + logging 输出到屏幕,将log日志写入文件
  • 原文地址:https://www.cnblogs.com/Allen-win/p/8323915.html
Copyright © 2011-2022 走看看