题解 | #反转链表#

反转链表

http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

反转链表

方法1 调转链表法
设置三个指针:
cur:用于保存当前节点的位置
pre:用于保存前一个节点位置,方便移动
nex:用于保存原本下一个节点的位置,防止丢失节点信息
利用循环每一次都将cur和pre前移,再将cur下一个节点由nex调转至pre。具体步骤如下:
nex = cur.next;
cur.next = pre;
pre = cur; cur = nex;

public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode nex = null;
        ListNode cur = head;
        ListNode pre = null;
        while(cur != null){
            nex = cur.next;
            cur.next = pre;
            pre = cur; cur = nex;
        }
        return pre;
    }
}

方法2 栈解决法
这道题我首先想到的是用栈解决,将链表装进栈中,然后再从栈中弹出构建新的链表
但在这里似乎不能使用栈Stack类。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务