Skip to content

Commit 164f645

Browse files
左程云左程云
authored andcommitted
modify code
1 parent 0e0eb7f commit 164f645

File tree

1 file changed

+68
-48
lines changed

1 file changed

+68
-48
lines changed

src/class02/Code01_ReverseList.java

Lines changed: 68 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package class02;
22

33
import java.util.ArrayList;
4+
import java.util.List;
45

56
public class Code01_ReverseList {
67

@@ -87,6 +88,7 @@ public static DoubleNode testReverseDoubleList(DoubleNode head) {
8788
return list.get(N - 1);
8889
}
8990

91+
// for test
9092
public static Node generateRandomLinkedList(int len, int value) {
9193
int size = (int) (Math.random() * (len + 1));
9294
if (size == 0) {
@@ -104,6 +106,7 @@ public static Node generateRandomLinkedList(int len, int value) {
104106
return head;
105107
}
106108

109+
// for test
107110
public static DoubleNode generateRandomDoubleList(int len, int value) {
108111
int size = (int) (Math.random() * (len + 1));
109112
if (size == 0) {
@@ -122,77 +125,94 @@ public static DoubleNode generateRandomDoubleList(int len, int value) {
122125
return head;
123126
}
124127

125-
// 要求无环,有环别用这个函数
126-
public static boolean checkLinkedListEqual(Node head1, Node head2) {
127-
while (head1 != null && head2 != null) {
128-
if (head1.value != head2.value) {
128+
// for test
129+
public static List<Integer> getLinkedListOriginOrder(Node head) {
130+
List<Integer> ans = new ArrayList<>();
131+
while (head != null) {
132+
ans.add(head.value);
133+
head = head.next;
134+
}
135+
return ans;
136+
}
137+
138+
// for test
139+
public static boolean checkLinkedListReverse(List<Integer> origin, Node head) {
140+
for (int i = origin.size() - 1; i >= 0; i--) {
141+
if (!origin.get(i).equals(head.value)) {
129142
return false;
130143
}
131-
head1 = head1.next;
132-
head2 = head2.next;
144+
head = head.next;
133145
}
134-
return head1 == null && head2 == null;
146+
return true;
135147
}
136148

137-
// 要求无环,有环别用这个函数
138-
public static boolean checkDoubleListEqual(DoubleNode head1, DoubleNode head2) {
139-
boolean null1 = head1 == null;
140-
boolean null2 = head2 == null;
141-
if (null1 && null2) {
142-
return true;
143-
}
144-
if (null1 ^ null2) {
145-
return false;
146-
}
147-
if (head1.last != null || head2.last != null) {
148-
return false;
149+
// for test
150+
public static List<Integer> getDoubleListOriginOrder(DoubleNode head) {
151+
List<Integer> ans = new ArrayList<>();
152+
while (head != null) {
153+
ans.add(head.value);
154+
head = head.next;
149155
}
150-
DoubleNode end1 = null;
151-
DoubleNode end2 = null;
152-
while (head1 != null && head2 != null) {
153-
if (head1.value != head2.value) {
156+
return ans;
157+
}
158+
159+
// for test
160+
public static boolean checkDoubleListReverse(List<Integer> origin, DoubleNode head) {
161+
DoubleNode end = null;
162+
for (int i = origin.size() - 1; i >= 0; i--) {
163+
if (!origin.get(i).equals(head.value)) {
154164
return false;
155165
}
156-
end1 = head1;
157-
end2 = head2;
158-
head1 = head1.next;
159-
head2 = head2.next;
160-
}
161-
if (head1 != null || head2 != null) {
162-
return false;
166+
end = head;
167+
head = head.next;
163168
}
164-
while (end1 != null && end2 != null) {
165-
if (end1.value != end2.value) {
169+
for (int i = 0; i < origin.size(); i++) {
170+
if (!origin.get(i).equals(end.value)) {
166171
return false;
167172
}
168-
end1 = end1.last;
169-
end2 = end2.last;
173+
end = end.last;
170174
}
171-
return end1 == null && end2 == null;
175+
return true;
172176
}
173177

178+
// for test
174179
public static void main(String[] args) {
175180
int len = 50;
176181
int value = 100;
177182
int testTime = 100000;
183+
System.out.println("test begin!");
178184
for (int i = 0; i < testTime; i++) {
179185
Node node1 = generateRandomLinkedList(len, value);
180-
Node reverse1 = reverseLinkedList(node1);
181-
Node back1 = testReverseLinkedList(reverse1);
182-
if (!checkLinkedListEqual(node1, back1)) {
183-
System.out.println("oops!");
184-
break;
186+
List<Integer> list1 = getLinkedListOriginOrder(node1);
187+
node1 = reverseLinkedList(node1);
188+
if (!checkLinkedListReverse(list1, node1)) {
189+
System.out.println("Oops1!");
190+
}
191+
192+
Node node2 = generateRandomLinkedList(len, value);
193+
List<Integer> list2 = getLinkedListOriginOrder(node2);
194+
node2 = testReverseLinkedList(node2);
195+
if (!checkLinkedListReverse(list2, node2)) {
196+
System.out.println("Oops2!");
185197
}
186-
DoubleNode node2 = generateRandomDoubleList(len, value);
187-
DoubleNode reverse2 = reverseDoubleList(node2);
188-
DoubleNode back2 = testReverseDoubleList(reverse2);
189-
if (!checkDoubleListEqual(node2, back2)) {
190-
System.out.println("oops!");
191-
break;
198+
199+
DoubleNode node3 = generateRandomDoubleList(len, value);
200+
List<Integer> list3 = getDoubleListOriginOrder(node3);
201+
node3 = reverseDoubleList(node3);
202+
if (!checkDoubleListReverse(list3, node3)) {
203+
System.out.println("Oops3!");
192204
}
205+
206+
DoubleNode node4 = generateRandomDoubleList(len, value);
207+
List<Integer> list4 = getDoubleListOriginOrder(node4);
208+
node4 = reverseDoubleList(node4);
209+
if (!checkDoubleListReverse(list4, node4)) {
210+
System.out.println("Oops4!");
211+
}
212+
193213
}
194-
System.out.println("finish!");
214+
System.out.println("test finish!");
195215

196216
}
197217

198-
}
218+
}

0 commit comments

Comments
 (0)