##单链表逆置非递归实现##
public class LinkedUtils {
public static void main(String[] args) {
Node head = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
head.next = node2;
node2.next = node3;
Node reverse = reverse(head);
printNode(reverse);
}
public static void printNode(Node node) {
while (node != null) {
System.out.println(node.data);
node = node.next;
}
}
/**
* 非递归方式实现链表的反转
*
* @param head
* @return
*/
public static Node reverse(Node head) {
if (head == null)
return head;
Node cur = head;
Node next = cur.next;
Node temp;
while(next != null){
temp = next.next;
next.next = cur;
cur = next;
next = temp;
}
head.next = null;
return cur;
}
static class Node {
Node next;
Object data;
public Node(Object data) {
super();
this.data = data;
}
}
}