题目描述:
输入一个链表,反转链表后,输出新链表的表头。
示例:
输入:
{1,2,3}
返回值:
{3,2,1}
解析:
如果指针操作不熟悉可以键一个栈存储。
现在先放下代码:
ListNode* ReverseList(ListNode* pHead)
{
//是否为空指针或长度为1
//若是,直接返回
if(pHead==nullptr||pHead->next==nullptr)
return pHead;
ListNode* ans=NULL; //让链表的下一个节点指向它
ListNode* temp=NULL; //链表的下一个节点改变前需要有一个新的指针指向剩下的链表
//题目链表不为空
while(pHead)
{
//链表改变前需先存储剩下节点位置才能之后复原
temp=pHead->next;
//如同入栈一样把新的节点指向ans的前段
pHead->next=ans;
//让ans指向pHead的位置,使ans重新成为新链表的前端
ans=pHead;
//复原pHead,使其重新指向原来的链表,进入下一轮循环
pHead=temp;
}
return ans;
}