给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
思路一:头插法
c语言解法
struct ListNode* reverseList(struct ListNode* head){
struct ListNode *pre = NULL;
struct ListNode *cur = head;
while (cur != NULL) {
struct ListNode *next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
分析:
本题要将链表中节点反转,可以先设置一个空节点来存放返回的链表,将cur指向pre再将pre指向cur,原地反转链表
总结:
本题考察对链表头插法的应用,利用指针的指向可以将链表原地反转,最后返回即可解决