单链表遍历及反转
package org.example.leecode;
import lombok.Data;
public class linkedNodeTest {
public static void main(String[] args) {
linkedNode head = new linkedNode();
head.setData(-1);
head.setNext(null);
linkedNode pre = new linkedNode();
head = pre;
for (int i = 0; i < 10; i++) {
linkedNode temp = new linkedNode();
temp.setData(i);
// 尾插法,从头遍历时,
pre.setNext(temp);
pre = pre.getNext();
// 头插法
// temp.setNext(head.getNext());
// head.setNext(temp);
}
pre.setNext(null);
// 从表头遍历到表尾
linkedNode temp = new linkedNode();
temp = head;
while (temp.getNext() != null) {
temp = temp.getNext();
System.out.print(temp.getData()+",");
}
linkedNode element = new linkedNode();
temp = head.getNext();
head.setNext(null);
while (temp!= null) {
element = temp;
temp = temp.getNext();
// 头插法实现反转
element.setNext(head.getNext());
head.setNext(element);
}
// 反转后遍历
System.out.println();
System.out.println("------------------");
temp = head;
while (temp.getNext() != null) {
temp = temp.getNext();
System.out.print(temp.getData()+",");
}
}
}
@Data
class linkedNode {
private linkedNode next;
private int data;
}
执行结果:
0,1,2,3,4,5,6,7,8,9,
------------------
9,8,7,6,5,4,3,2,1,0,



