问题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点,链表定义如下:
struct ListNode
{
int m_nValue;
ListNode *m_pNext;
};
解题思路:链表反转就是每个节点本来是指向后一个节点的现在指向了前一个节点,而反转链表的头节点就是反转前链表的尾节点。
ListNode *ReverseList(ListNode *pHead)
{
ListNode *pReverseHead = nullptr;
ListNode *pNode = pHead;
ListNode *pPrevNode = nullptr;
while(pNode != nullptr)
{
ListNode *pNext = pNode->m_pNext;
if(pNext == nullptr)
pReverseHead = pNode;
pNode->m_pNext = pPrevNode;
pPrevNode = pNode;
pNode = pNext;
}
return pReverseHead;
}