解析过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517125944858.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW56aXRpYW42MDU4,size_16,color_FFFFFF,t_70)
代码实现
package linkedListReview1;
public class TestReverseLinkedList {
public static void main(String[] args) {
LinkList L = new LinkList();
LinkNode ln1 = new LinkNode(1, "宋江", "及时雨");
LinkNode ln2 = new LinkNode(2, "卢俊义", "玉麒麟");
LinkNode ln3 = new LinkNode(3, "吴用", "智多星");
LinkNode ln4 = new LinkNode(4, "林冲", "豹子头");
LinkNode ln5 = new LinkNode(5, "林冲", "豹子头");
L.addTail(ln1);
L.addTail(ln2);
L.addTail(ln3);
L.addTail(ln4);
L.addTail(ln5);
L.travelLinkList();
reverLinkList(L.getHead());
System.out.println();
L.travelLinkList();
}
public static int size(LinkNode head) {
if (head.next == null) {
return 0;
}
int count = 0;
LinkNode p = head.next;
while (p != null) {
count++;
p = p.next;
}
return count;
}
public static void reverLinkList(LinkNode head) {
if (head.next == null) {
System.out.println("LinkList is empty!");
return;
}
int len = size(head);
System.out.println("len=" + len);
if (len == 1) {
System.out.println("reverse complete!");
return;
}
LinkNode p1 = head;
LinkNode p2 = p1.next;
LinkNode q1;
LinkNode q2;
for (int i = 0; i < len / 2; i++) {
q1 = head.next;
q2 = q1.next;
for (int j = 0; j != len - i - 2; j++) {
q1 = q1.next;
q2 = q1.next;
}
LinkNode temp = q2.next;
if (p2 == q1) {
p1.next = q2;
q2.next = p2;
} else {
p1.next = q2;
q2.next = p2.next;
q1.next = p2;
}
p2.next = temp;
p1 = p1.next;
p2 = p1.next;
}
}
}