步骤
- 1、尾部插入法创建链表
- 2、自定义上一个节点、当前节点、下一个节点,遍历反转链表,主要是把当前节点的下一个节点设置为当前节点的上一个节点;
public class ReverseLinkd {
private static Node head;
private static Node tail;
public static void main(String[] args) {
String[] dataArray = {"1", "2", "3", "4", "5", "6", "7"};
for(int i = 0; i< dataArray.length; i++) {
createLinked(dataArray[i]);
}
System.out.println("---------------原链表---------------");
printAll(head);
System.out.println("---------------反转后链表---------------");
printAll(reverse(head));
}
public static Node reverse(Node node) {
if(node == null) {
System.out.println("空链表");
return null;
} else if(node.next == null) {
System.out.println("链表只有一个节点");
return node;
} else {
Node pre = null;
Node next = null;
Node cur = node;
while(cur != null) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
}
public static void createLinked(String nodeData) {
Node node = new Node(nodeData);
if(head == null) {
head = node;
tail = head;
} else {
tail.next = node;
tail = node;
}
}
public static void printAll(Node node) {
if(node == null) {
System.out.println("空链表");
} else {
while(node != null) {
System.out.print(node.getData() + "-->");
node = node.next;
}
}
System.out.println();
}
static class Node{
public String data;
public Node next;
public Node(String data) {
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
}