您的位置:首页 > 编程语言 > C语言/C++

链表反转C++

2016-09-07 22:58 162 查看
从头到尾遍历原链表,每遍历一个结点,将其摘下放在新链表的最前端。注意链表为空和只有一个结点的情况。时间复杂度为O(n)。参考代码如下:

#include <cstdio>

//链表反转
ListNode *list_invert(ListNode *phead)
{
if(phead == NULL)
return NULL;
ListNode *ptemp1 = phead->next;//你先走
ListNode *ptemp2 = phead;//我殿后
ListNode *newHead = phead;
ptemp2->next = NULL;

while(ptemp1 != NULL)
{
ptemp2 = ptemp1;
ptemp1= ptemp1->next;
ptemp2->next = newHead;
newHead = ptemp2;
}
return newHead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: