链表反转C++

来源:互联网 发布:电脑管家mac版 编辑:程序博客网 时间:2024/04/30 16:48

从头到尾遍历原链表,每遍历一个结点,将其摘下放在新链表的最前端。注意链表为空和只有一个结点的情况。时间复杂度为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;}
0 0
原创粉丝点击