赞
踩
问题描述
给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。
示例
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head = [1,2] 输出:[2,1] 输入:head = [] 输出:[]
解题思路 :我们需要三个指针变量,首先prev指向NULL,cur指向head,tmp指向cur->next,tmp在这里的作用及就是保存cur的下一个节点。我们每次操作只需要变换cur指针的指向,使它指向前边的节点即可,前边的节点用prev指向,变换完后将三个指针同步后移即可。
画图实现:
代码实现
- struct ListNode* reverseList(struct ListNode* head)
- {
- struct ListNode* prev = NULL;
- struct ListNode* cur = head;
- while(cur)
- {
- struct ListNode* tmp = cur->next;
- cur->next = prev;
- prev = cur;
- cur= tmp;
- }
- return prev;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。