LeetCode 206. 反转链表
发布日期:2021-07-01 03:13:51 浏览次数:2 分类:技术文章

本文共 999 字,大约阅读时间需要 3 分钟。

文章目录

1. 题目信息

反转一个单链表。

示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL

进阶:

你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 循环迭代

  • 利用三个变量迭代
  • 很简单,注意不要丢失指针,注意顺序
    在这里插入图片描述
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {
public: ListNode* reverseList(ListNode* head) {
ListNode *prevNode = NULL, *nextNode; while(head) {
nextNode = head->next; head->next = prevNode; prevNode = head; head = nextNode; } return prevNode; }};

2.2 递归

在这里插入图片描述

class Solution {
public: ListNode* reverseList(ListNode* head) {
if (head == NULL || head->next == NULL) return head; ListNode *p = reverseList(head->next); head->next->next = head; //p->next = head;错误写法 head->next = NULL; return p; }};

转载地址:https://michael.blog.csdn.net/article/details/100171825 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode 146. LRU缓存机制(哈希链表)
下一篇:LeetCode 237. 删除链表中的节点

发表评论

最新留言

很好
[***.229.124.182]2024年04月15日 14时43分52秒