您的位置:首页 > Web前端

剑指offer(17):反转链表

2016-04-26 10:26 381 查看
题目描述

输入一个链表,反转链表后,输出链表的所有元素。

分析

正确的反转链表,需要调整好链表指针的方向。主要注意3个问题:

空指针

反转后的链表出现断裂

反转后的头结点是原链表的尾节点

牛客AC代码:

/**
* 输入一个链表,反转链表后,返回反转链表后的头结点
*
* 问题处理:
* 1、空指针
* 2、反转后的链表出现断裂
* 3、反转后的头结点是原链表的尾节点
* @param head
* @return
*/
public ListNode ReverseList(ListNode head) {
if(head == null)
return null;

ListNode pReversedHead = null;  // 反转后头结点
ListNode pNode = head;      // 当前节点
ListNode pPrev = null;      // 前一个节点

while(pNode != null) {
// 下一个节点
ListNode pNext = pNode.next;
// pNext为空,到达尾节点,返回当前节点
if(pNext == null) {
pReversedHead = pNode;
}

// 实现反转,当前节点指向前一个节点
pNode.next = pPrev;

// 往后遍历
pPrev = pNode;
pNode = pNext;
}

return pReversedHead;
}


参考

1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: