1、题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
2、算法分析
①定义pre指针指向的是head的前一个结点
②定义p指针指向head结点
③遍历:
p指向head.next
head.next = pre:反转方向
// pre指向head
pre = head;
// head = p,继续往后走
head = p;
3、代码实现
/**
* 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 pre = null;
// 指向头指针
ListNode p = head;
// 当head不为null的时候
while(head != null){
// p指针指向的是head的下一个结点
p = head.next;
// 反转方向,head.next = pre;
head.next = pre;
// pre指向head
pre = head;
// head = p,继续往后走
head = p;
}
return pre;
}
}