输入一个链表,反转链表后,如何输出新链表的表头呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
head无数据版本:
    public ListNode ReverseList(ListNode head) {
       
		if(head.next == null || head.next.next == null) {
			return head;
		}
		//辅助指针,遍历原来的链表
		ListNode cur = head.next.next;
		ListNode next = null; //指向cur的下一个节点 防止断链
		ListNode reverseHead = null;
		while( cur != null) {
			next = cur.next;//暂时保存后面有用
			cur.next = reverseHead.next;//cur的下一个节点指向新链表的最前端
			reverseHead.next = cur;//cur连接到新的链表最顶端
			cur = next;
		}
		
        return reverseHead;
	}
}
 
head有数据版本:
    public ListNode ReverseList(ListNode head) {
       
        if(head==null)
            return null;
        ListNode pre = null;
        ListNode next = null;
        while(head!=null){
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
      
        return pre;
    }
}