剑指offer之反转链表

xiaoxiao2021-03-01  6

1.问题描述

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 结构体类型:

struct ListNode { int m_nValue; ListNode* m_pNext; };

2.分析

注意链表为空如果链表就一个节点,那么就返回头结点如果链表有多个节点,那么需要更多考虑 a->b->...->h->i->j->... a<-b<-..-<h -<i j->...

我们比较容易导致链表断裂,找不到下一个节点,所以我们每次修改一个n节点的m_pNext 之前,需要保存下n+1节点,否则就找不到下一个节点了。

3.源码

ListNode* ReverseList(ListNode* pHead) { if(pHead == nullptr) return nullptr; ListNode* pReversHead = pHead; ListNode* pNext = pHead->m_pNext; pReversHead->m_pNext = nullptr; while(pNext != nullptr) { ListNode* pNode = pNext; pNext = pNext->m_pNext; pNode->m_pNext = pReversHead; pReversHead = pNode; } return pReversHead; }
转载请注明原文地址: https://www.6miu.com/read-4150039.html

最新回复(0)