• 剑指Offer(Java版)第十六题:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。


    /*
    给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
    */
    public class Class16 {

    static class ListNode{
    int val;
    ListNode next;
    public ListNode(int value, ListNode nextNode){
    val = value;
    next = nextNode;
    }
    }

    public ListNode deleteNode(ListNode headNode, ListNode deleteNode){
    //判断链表是否为空
    if(headNode == null || deleteNode == null){
    return headNode;
    }
    //删除头节点
    if(headNode == deleteNode){
    headNode = null;
    deleteNode = null;
    //删除的节点是尾节点
    }else{
    if(deleteNode.next == null){
    ListNode pointNode = headNode;
    while(pointNode.next.next != null){
    pointNode = pointNode.next;
    }
    pointNode.next = null;
    }else{
    deleteNode.val = deleteNode.next.val;
    deleteNode.next = deleteNode.next.next;
    }
    }
    return headNode;
    }

    public void test(ListNode head,ListNode PToBeDelete) {
    System.out.println("============");
    System.out.print("The original list is: ");
    ListNode curr=head;
    if(curr!=null) {
    while(curr.next!=null) {
    System.out.print(curr.val+",");
    curr=curr.next;
    }
    System.out.println(curr.val);
    }else {
    System.out.println();
    }

    System.out.print("The node to be deleted is: ");
    if(PToBeDelete!=null)
    System.out.println(PToBeDelete.val);
    else
    System.out.println();

    curr=deleteNode(head, PToBeDelete);
    System.out.print("The result list is: ");
    if(curr!=null) {
    while(curr.next!=null) {
    System.out.print(curr.val+",");
    curr=curr.next;
    }
    System.out.println(curr.val);
    }else {
    System.out.println();
    }
    System.out.println("============");
    }

    public void test1() {
    ListNode p4=new ListNode(4, null);
    ListNode p3=new ListNode(3, p4);
    ListNode p2=new ListNode(2, p3);
    ListNode p1=new ListNode(1, p2);
    test(p1, p2);
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Class16 c = new Class16();
    c.test1();

    }

    }

  • 相关阅读:
    第六章 Realm及相关对象(四) PrincipalCollection
    Java消息中间件的概述与JMS规范
    什么是红黑树?
    Mybatis逆向工程的pojo实现序列化接口的代码
    关于 Java 中 finally 语句块的深度辨析
    一道字符串变量对比值是否相等题
    java-网络编程
    java. io 流
    java.io.File 类的常用的方法
    list集合排序的两种方法
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12450705.html
Copyright © 2020-2023  润新知