单链表及单链表翻转

pull/3/head
Leo 5 years ago
parent 8b6af78573
commit 7699463b89

@ -0,0 +1,206 @@
package leo.class02;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
* @author Leo
* @ClassName LinkedList
* @DATE 2020/11/18 3:24
* @Description
*
*
*
*
*/
public class LinkedList {
public static class Node{
int value;
Node next;
public Node(int value) {
this.value = value;
}
}
public class DoubleNode{
int value;
DoubleNode pre;
DoubleNode next;
public DoubleNode(int value) {
this.value = value;
}
}
/**
* :
* @author Leo
* @date 2020/11/18 3:42
* @param head
* @return leo.class02.LinkedList.Node
*/
public static Node reverseNode(Node head) {
Node pre = null;
Node next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
public static Node reverseNode1(Node head) {
Node pre = null;
Node next = null;
while (head != null) {
next = head;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
public static Node reverseNode2(Node head) {
Node pre = null;
Node next = null;
while (head != null) {
next = head;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
public static Node reverseNode3(Node head) {
Node pre = null;
Node next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
public static Node reverseNode4(Node head) {
Node pre = null;
Node next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
public static DoubleNode reverseDoubleNode(DoubleNode head) {
DoubleNode pre = null;
DoubleNode next;
while (head != null) {
next = head.next;
head.pre = next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
/**
* :
* @author Leo
* @date 2020/11/18 6:43
* @param sizeMax
* @param range
* @return leo.class02.LinkedList.Node
*/
public static Node randomNode(int sizeMax, int range) {
int size = (int) ((sizeMax + 1) * Math.random());
if (size == 0) {
return null;
}
Node head = new Node(randomInt(range));
Node pre = head;
size--;
while (size != 0) {
Node cur = new Node(randomInt(range));
pre.next = cur;
pre = cur;
size--;
}
return head;
}
public static int randomInt(int range) {
return (int) (Math.random() * (range + 1));
}
/**
* :
* @author Leo
* @date 2020/11/18 9:40
* @param nodeList
* @param node
* @return boolean
*/
public static boolean verifyReverseListAndNode(List<Node> nodeList, Node node) {
Node cur = node;
for (int i = nodeList.size() - 1; i >= 0; i--) {
if (cur==null||cur != nodeList.get(i)) {
return false;
}
cur = cur.next;
}
return true;
}
/**
* : nodelist
* @author Leo
* @date 2020/11/18 10:11
* @param node
* @return java.util.List<leo.class02.LinkedList.Node>
*/
public static List<Node> nodeToList(Node node) {
List<Node> list = new ArrayList<>();
Node cur = node;
while (cur != null) {
list.add(cur);
cur = cur.next;
}
return list;
}
public static void main(String[] args){
int maxSize = 40;
int range = 90;
int testTime = 1000;
System.out.println("测试开始");
for (int i = 0; i < testTime; i++) {
Node head = randomNode(maxSize, range);
List<Node> nodeList = nodeToList(head);
Node node = reverseNode4(head);
if (!verifyReverseListAndNode(nodeList, node)) {
System.out.println("nodeFuck!!");
break;
}
}
System.out.println("测试结束");
}
}
Loading…
Cancel
Save