链表练习

pull/3/head
Leo 5 years ago
parent 9b9e9ca04d
commit bae211d2e8

@ -85,6 +85,26 @@ public class DeleteGivenValue {
}
public static Node removeNodeOfValue2(Node head, int value) {
while (head != null) {
if (head.value != value) {
break;
}
head = head.next;
}
Node cur = head;
Node pre = head;
while (cur != null) {
if (cur.value == value) {
pre.next = cur.next;
}else{
pre = cur;
}
cur = cur.next;
}
return head;
}
/**
* :
* @author Leo
@ -162,12 +182,40 @@ public class DeleteGivenValue {
while (cur != null) {
if (cur.value == value) {
pre.next = cur.next;
}else{
cur.pre = pre;
pre = cur;
}
cur = cur.next;
}
return head;
}
public static DoubleNode removeDoubleNodeOfValue3(DoubleNode head, int value) {
while (head != null) {
if (head.value != value) {
break;
}
head = head.next;
}
if (head != null && head.pre != null) {
head.pre = null;
}
DoubleNode cur = head;
DoubleNode pre = head;
while (cur != null) {
if (cur.value == value) {
pre.next = cur.next;
}else{
if (cur.pre != pre) {
cur.pre = pre;
}
pre = cur;
}
cur = cur.next;
}
return head;
}
@ -277,14 +325,14 @@ public class DeleteGivenValue {
for (int i = 0; i < testTime; i++) {
int value = randomInt(range);
Node nodeHead = randomNode(sizeMax, range);
Node node = removeNodeOfValue1(nodeHead, value);
Node node = removeNodeOfValue2(nodeHead, value);
if (!verifyRemoveNodeOfValue(node,value)) {
System.out.println("node fuck!");
break;
}
DoubleNode doubleNodeHead = randomDoubleNode(sizeMax, range);
DoubleNode doubleNode = removeDoubleNodeOfValue2(doubleNodeHead, value);
DoubleNode doubleNode = removeDoubleNodeOfValue3(doubleNodeHead, value);
if (!verifyRemoveDoubleNodeOfValue(doubleNode, value)) {
System.out.println("doubleNode fuck");
break;

@ -118,6 +118,17 @@ public class LinkedList {
return pre;
}
public static Node reverseNode6(Node head) {
Node pre = head;
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;
@ -158,6 +169,20 @@ public class LinkedList {
return pre;
}
public static DoubleNode reverseDoublerNode3(DoubleNode head) {
DoubleNode pre = head;
DoubleNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
head.pre = head.next;
pre = head;
head = next;
}
return pre;
}
/**
* :
* @author Leo
@ -288,14 +313,14 @@ public class LinkedList {
for (int i = 0; i < testTime; i++) {
Node head = randomNode(maxSize, range);
List<Node> nodeList = nodeToList(head);
Node node = reverseNode5(head);
Node node = reverseNode6(head);
if (!verifyReverseListAndNode(nodeList, node)) {
System.out.println("nodeFuck!!");
break;
}
DoubleNode doubleNodeHead = randomDoubleNode(maxSize, range);
List<DoubleNode> doubleNodeList = DoubleNodeToList(doubleNodeHead);
DoubleNode doubleNode = reverseDoubleNode2(doubleNodeHead);
DoubleNode doubleNode = reverseDoublerNode3(doubleNodeHead);
if (!verifyReverseListAndDoubleNode(doubleNodeList, doubleNode)) {
System.out.println("doubleNodeFuck!!");
break;

Loading…
Cancel
Save