zoukankan      html  css  js  c++  java
  • 反转部分单向链表

    package chapter_2_listproblem;
    
    public class Problem_05_ReversePartList {
    
        public static class Node {
            public int value;
            public Node next;
    
            public Node(int data) {
                this.value = data;
            }
        }
    
        public static Node reversePart(Node head, int from, int to) {
            int len = 0;
            Node node1 = head;
            Node fPre = null;
            Node tPos = null;
            while (node1 != null) {
                len++;
                fPre = len == from - 1 ? node1 : fPre;
                tPos = len == to + 1 ? node1 : tPos;
                node1 = node1.next;
            }
            if (from > to || from < 1 || to > len) {
                return head;
            }
            node1 = fPre == null ? head : fPre.next;
            Node node2 = node1.next;
            node1.next = tPos;
            Node next = null;
            while (node2 != tPos) {
                next = node2.next;
                node2.next = node1;
                node1 = node2;
                node2 = next;
            }
            if (fPre != null) {
                fPre.next = node1;
                return head;
            }
            return node1;
        }
    
        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 = null;
            printLinkedList(head);
            head = reversePart(head, 1, 1);
            printLinkedList(head);
    
            head = new Node(1);
            printLinkedList(head);
            head = reversePart(head, 1, 1);
            printLinkedList(head);
    
            head = new Node(1);
            head.next = new Node(2);
            printLinkedList(head);
            head = reversePart(head, 1, 2);
            printLinkedList(head);
    
            head = new Node(1);
            head.next = new Node(2);
            head.next.next = new Node(3);
            printLinkedList(head);
            head = reversePart(head, 2, 3);
            printLinkedList(head);
    
            head = new Node(1);
            head.next = new Node(2);
            head.next.next = new Node(3);
            printLinkedList(head);
            head = reversePart(head, 1, 3);
            printLinkedList(head);
    
        }
    
    }
  • 相关阅读:
    SQL WHERE 子句:语法及案例剖析
    SQL SELECT DISTINCT 语句:语法及案例剖析
    SQL SELECT 语句:语法与案例剖析
    SQL 语法:一些最重要的 SQL 命令简介
    SQL 简介:什么是SQL,SQL能做什么
    mybatis 注解开发
    mybatis 缓存
    mybatis 延迟加载策略
    mybatis的多表查询
    mybatis 的动态 SQL 语句
  • 原文地址:https://www.cnblogs.com/chwy/p/5712565.html
Copyright © 2011-2022 走看看