题目:逆置链表
思路:
1.result -------> 结果链表
cur -------->用来遍历原链表的
1.遍历整个链表 取出节点 cur
2. 把 取出来的 节点 cur 头插到 结果链表 result 上
代码:
1.定义节点代码
public class Node {
int val;
Node next = null;
Node(int val){
this.val = val;
}
//打印链表
@Override
public String toString() {
return String.format("Node(%d)",val);
}
}
逆置链表代码:
public class Practice2 {
public static Node reverse(Node head){
//遍历链表
Node cur = head;
//结果链表
Node result = null;
while(cur != null){
//因为后面改变了 cur.next 所指向的元素,
// 所以需要提前记录 cur 的 下一个元素
Node next = cur.next;
//把 cur 头插 到 result 上
cur.next = result;
result = cur;
cur = next;
}
return result;
}
//测试方法 创建一个链表
private static Node test(){
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(4);
n1.next = n2;
n2.next = n3;
n3.next = n4;
return n1;
}
public static void main(String[] args) {
Node head = reverse(test());
for(Node cur = head;cur != null;cur = cur.next){
System.out.println(cur);
}
}
}