java非递归实现单链表反转

来源:互联网 发布:大数据比赛 编辑:程序博客网 时间:2024/06/04 23:21

今天晚上看了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;}
原创粉丝点击