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);
    
        }
    
    }
  • 相关阅读:
    把office文档转换为html过程中的一些坑
    Win10内置应用恢复初始状态
    HTTP 错误 500.23
    关于Application.Lock和Lock(obj) 转 http://www.cnblogs.com/yeagen/archive/2012/03/01/2375610.html
    正则表达式 细节
    Python常用内置函数总结
    将Python脚本封装成exe可执行文件 转
    爬虫技能
    python之map、filter、reduce、lambda函数 转
    小细节
  • 原文地址:https://www.cnblogs.com/chwy/p/5712565.html
Copyright © 2011-2022 走看看