leetcode-反转链表-46
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-反转链表-46相关的知识,希望对你有一定的参考价值。
题目要求
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
思路
设计三个指针,最快的指针tail用来判断链表是否走完,中间的节点cur和最后面的节点prev负责翻转,然后如果的tail->next不为空,所有节点往后走一步。
代码实现
class Solution {
public:
ListNode* reverseList(ListNode* head) {
//解决了节点个数为1或者为0的情况
if (head == NULL || head->next == NULL)
{
return head;
}
ListNode* prev = head;
//解决两个节点
ListNode* cur = prev->next;
prev->next = NULL;
if (cur->next == NULL)
{
cur->next = prev;
return cur;
}
ListNode* tail = cur->next;
cur->next = prev;
while (tail->next != NULL)
{
prev = cur;
cur = tail;
tail = tail->next;
cur->next = prev;
}
tail->next = cur;
return tail;
}
};
以上是关于leetcode-反转链表-46的主要内容,如果未能解决你的问题,请参考以下文章