版权声明:知识无界限,大家可自由转载。 https://blog.csdn.net/xidianbaby/article/details/85037825
1-题目
:
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。
2-思路
:
反转链表指向时,需要保存临时结点和指向,防止断链。
3-代码
:
struct ListNode
{
int Key;
ListNode *pNext;
};
ListNode *ReverseIteratively(ListNode *pHead)
{
//反转链表的头结点
ListNode *pReversedHead = NULL;
//当前结点
ListNode *pNode = pHead;
//当前结点的前一个结点
ListNode *pPrev = NULL;
while (pNode != NULL)
{
//获取下一个结点并保存在pNext中
ListNode *pNext = pNode->pNext;
//如果PNext为空,说明当前结点是尾结点,即反转链表的头结点
if (pNext == NULL)
{
pReversedHead = pNode;
}
//当前结点指向前一个结点
pNode->pNext = pPrev;
//设置前一个结点为当前结点
pPrev = pNode;
//移动当前结点到下一个结点
pNode = pNext;
}
return pReversedHead;
}