剑指:反转链表

来源:互联网 发布:linux复制命令 编辑:程序博客网 时间:2024/05/02 04:37

题目描述

输入一个链表,反转链表后,输出链表的所有元素。

思路1:三个指针在链表上同时滑动,比较容易想到但是编码略复杂

 ListNode* ReverseList(ListNode* pHead)    {        if (pHead == NULL) return NULL;        if (pHead->next == NULL) return pHead;        ListNode *pBefore=pHead, *p=pBefore->next, *pAfter=p->next;        pHead->next=NULL;        while(pAfter!=NULL)        {            p->next=pBefore;            pBefore=p;            p=pAfter;            pAfter=pAfter->next;        }        p->next=pBefore;        return p;    }

思路2:依次取出链表的插入到新链表的头部
       
ListNode* ReverseList(ListNode* pHead)     {        if(pHead==NULL) return NULL;        ListNode *newHead=pHead,*currentNode=pHead->next;        newHead->next=NULL;        while(currentNode!=NULL)        {            ListNode *t=currentNode->next;            currentNode->next=newHead;            newHead=currentNode;            currentNode=t;        }        pHead=NULL;        return newHead;    }

0 0
原创粉丝点击