定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode preNode = null; // 存放当前节点,作为下个结点的next节点
ListNode nextNode = null; // 存放当前节点的next结点,下一个要处理的节点
ListNode node = head;
while (node != null) {
nextNode = node.next; // 存放当前节点的下一个节点
node.next = preNode; // preNode原来是当前节点的上一个节点,现在反过来
preNode = node; // 将当前节点存为preNode,作为下个节点的next节点
if (nextNode == null) {
return node;
}
node = nextNode;
}
return node;
}
}