反转链表

反转链表

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

AC代码如下:这里利用了栈,其实还可以用数组会更快。就是先把链表所有的数取出并压入栈中,再弹出构造链表,利用了栈的先进后出翻转特性。具体步骤的作用都写在代码里了,不再赘述

import java.util.Stack;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head==null)
            return null;
        Stack<Integer> stack=new Stack();//整数栈
        stack.add(head.val);
        while(head.next!=null)
        {
            head=head.next;
            stack.add(head.val);
        }
        ListNode ans=new ListNode(stack.pop());//因为上面链表非空,所以栈至少有一个元素
        ListNode a=ans;//用一个指针来指向结果链表的最后一个结点
        while(!stack.isEmpty()) //当栈非空,表明还可以构建链表的节点
        {
            ListNode temp=new ListNode(stack.pop()); //新建节点
            a.next=temp; //结果链表的最后一个结点替换为上面新建节点
            a=a.next; //并且把最后节点的指针往后移动一个节点
        }
        return ans;
    }
}
全部评论

相关推荐

10-17 13:54
上海大学 运营
雾凇岛:这还说什么了,冲了兄弟们
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务