链表的反转
例如链表:
1->2->3->4->5
反转之后:
5->4->3->2->1
思路:
从头到尾遍历原链表,每遍历一个节点,将其摘下放在新链表的最前端,作为头节点。
代码实现:
public static void ReverseNode(node head){
node p = head;
node pre = null;
node next = null;
while(p != null){
next = p.next; //记录下一个节点
p.next = pre; //关键两步,将当前节点p的下一个节点指向新链表的头
pre = p; //摘下当前节点给新链表作为头节点
p = next;
}
while(pre != null){
System.out.print(pre.value+" ");
pre = pre.next;
}
}
测试程序:
public static void main(String[] args) {
//创建链表
node head = new node(0);
node p = head;
for(int i=1;i<10;i++){
p.next = new node(i);
p = p.next;
}
ReverseNode(head);
}
创建的链表:0 1 2 3 4 5 6 7 8 9
输出:
9 8 7 6 5 4 3 2 1 0