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);
    
        }
    
    }
  • 相关阅读:
    laravel框架简易对接网易163邮件
    新版PHP7安装redis扩展并在laravel中运用
    make: as86: Command not found
    Ubuntu主题美化
    Ubuntu更换阿里源
    Ubuntu配置中文输入法
    JS内利用Ajax同后端异步交互数据
    更改网页内滚动条效果
    鼠标点击烟花特效
    内存交换分区创建&文件系统观察与操作
  • 原文地址:https://www.cnblogs.com/chwy/p/5712565.html
Copyright © 2011-2022 走看看