赞
踩
注:划重点!!必考~
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
这里我们采用三指针进行反转链表:
- 指针cur进行遍历链表
- 指针next记录cur的下一个指针,防止反转时下一个节点地址丢失
- 指针prev用来记录cur后指针,以便构建反转后的节点关系
注:需要处理好首节点节点之间的更替关系
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * struct ListNode *next;
- * };
- */
-
-
- struct ListNode* reverseList(struct ListNode* head){
- struct ListNode* prev=NULL,*cur=head,*next;
- while(cur)//cur为NULL时遍历链表结束
- {
- //保存下一个节点地址
- next=cur->next;
- //反转链接方向
- cur->next=prev;
- //更新后指向结点位置
- prev=cur;
- //更新指向当前节点位置
- cur=next;
- }
- return prev;
- }
每日k题无烦恼,留个三连再走也不迟~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。