反转链表
约 279 字小于 1 分钟
题目:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。链表的定义如下:
public class ListNode { public int value; public ListNode next; }
分析:
要反转链表,需要每个节点的next指向它的前一个节点,下一个节点next指向当前节点。所以需要把当前节点记录下来。当链表遍历到尾节点时,即为反转后的头节点。
代码:
public class ReverseListNode {
public static ListNode getReversedListNode(ListNode pHaed) {
// 反转后的头节点
ListNode reverseHead = null;
// 当前节点
ListNode curNode = pHaed;
// 前一个节点
ListNode prevNode = null;
while (curNode != null) {
// 获取链表中下一个节点
ListNode nextNode = curNode.next;
// 如果下一个节点为null,说明到达链表尾部
if (nextNode == null) {
reverseHead = curNode;
}
// 把当前节点的next指向前一个节点
curNode.next = prevNode;
// 当前节点赋值给前一个节点
prevNode = curNode;
// 下一个节点赋值给当前节点
curNode = nextNode;
}
return reverseHead;
}
}