【leetcode100-023】【链表】反转链表
2023-12-28 19:38:10
【题干】
给你单链表的头节点?head
?,请你反转链表,并返回反转后的链表。
【思路】
太经典了,感觉也没什么必要用文字来描述了,今天实在太累了,直接代码吧。
【题解】
class Solution {
public:
ListNode* reverseList(ListNode* head) {
// 申请节点,pre和 cur,pre指向null
ListNode* pre = nullptr;
ListNode* cur = head;
while (cur != nullptr) {
// 记录当前节点的下一个节点
ListNode* tmp = cur->next;
cur->next = pre;
// pre和cur节点都前进一位
pre = cur;
cur = tmp;
}
return pre;
}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
// 这里的cur就是最后一个节点
ListNode* cur = reverseList(head->next);
// 这里请配合动画演示理解
// 如果链表是 1->2->3->4->5,那么此时的cur就是5
// 而head是4,head的下一个是5,下下一个是空
// 所以head.next.next 就是5->4
head->next->next = head;
// 防止链表循环,需要将head.next设置为空
head->next = nullptr;
// 每层递归函数都返回cur,也就是最后一个节点
return cur;
}
};
文章来源:https://blog.csdn.net/weixin_63059689/article/details/135276234
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!