java非递归实现单链表反转

今天晚上看了IT名企算法与数据结构最优解的关于单链表的反转问题,刚开始自己也理解了一会。后面突然就豁然开朗了。

首先,我们申明一个链表类。

//链表类
class Node{
    public int data;
    public Node next;
    public Node(int data){
        this.data=data;
    }

}

因为在对链表进行反转的时候,需要更新每一个node的“next”值,但是,在更新 next 的值前,我们需要保存 next 的值,否则我们无法继续。所以,我们需要两个指针分别指向前一个节点和后一个节点,每次做完当前节点“next”值更新后,把两个节点往下移,直到到达最后节点。

代码如下:

public Node resverList(Node head){
   Node pre=null;
   Node next=null;
    while(head!=null){
        next = head.next;
        head.next=pre;
        pre=head;
        head=next;
    }
    return pre;
}

你可能感兴趣的:(算法)