zoukankan      html  css  js  c++  java
  • 删除链表的中间节点和a/b处的节点

    package chapter_2_listproblem;
    
    public class Problem_03_RemoveNodeByRatio {
    
        public static class Node {
            public int value;
            public Node next;
    
            public Node(int data) {
                this.value = data;
            }
        }
    
        public static Node removeMidNode(Node head) {
            if (head == null || head.next == null) {
                return head;
            }
            if (head.next.next == null) {
                return head.next;
            }
            Node pre = head;
            Node cur = head.next.next;
            while (cur.next != null && cur.next.next != null) {
                pre = pre.next;
                cur = cur.next.next;
            }
            pre.next = pre.next.next;
            return head;
        }
    
        public static Node removeByRatio(Node head, int a, int b) {
            if (a < 1 || a > b) {
                return head;
            }
            int n = 0;
            Node cur = head;
            while (cur != null) {
                n++;
                cur = cur.next;
            }
            n = (int) Math.ceil(((double) (a * n)) / (double) b);
            if (n == 1) {
                head = head.next;
            }
            if (n > 1) {
                cur = head;
                while (--n != 1) {
                    cur = cur.next;
                }
                cur.next = cur.next.next;
            }
            return head;
        }
    
        public static void printLinkedList(Node head) {
            System.out.print("Linked List: ");
            while (head != null) {
                System.out.print(head.value + " ");
                head = head.next;
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Node head = new Node(1);
            head.next = new Node(2);
            head.next.next = new Node(3);
            head.next.next.next = new Node(4);
            head.next.next.next.next = new Node(5);
            head.next.next.next.next.next = new Node(6);
    
            printLinkedList(head);
            head = removeMidNode(head);
            printLinkedList(head);
            head = removeByRatio(head, 2, 5);
            printLinkedList(head);
            head = removeByRatio(head, 1, 3);
            printLinkedList(head);
    
        }
    
    }
  • 相关阅读:
    mysql book网盘
    mysql数据库测试库下载
    TEMP
    测试
    吴炳锡
    ACMUG
    mysql select语句执行顺序
    mysql mha高可用架构的安装
    执行计划解读 简朝阳 (Sky Jian) and 那蓝蓝海
    mysql字符串比较
  • 原文地址:https://www.cnblogs.com/chwy/p/5712546.html
Copyright © 2011-2022 走看看