单链表反转的非递归方法:
首先是结点的定义:
public class Node {
//数据域
int value;
//结点域
Node next;
public Node(int value){
this.value = value;
this.next = null;
}
}
使用非递归方法反转单链表,需要设置两个Node类型的对象pre和nex,pre用来记录head的前一个结点,nex用来记录head的后一个结点,然后讲head结点后移。代码:
public Node reverseCur(Node head){
Node pre = null;
Node nex = null;
while(head != null){
nex = head.next;
head.next = pre;
pre = head;
head = nex;
}
return pre;
}
具体分为四个步骤:
1.记录head的下一个结点
2.将head.next设置为pre
3.用pre记录当前的head
4.head结点后移
在这四个步骤中,pre结点会随着head结点后移,并反转了head.next的指向,当到达单链表末尾时,pre就完成了反转。