您的位置:首页 > 其它

题目16:反转链表

2016-09-14 16:30 232 查看
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。

思路:我们需要定义三个指针,分别指向当前结点,它的前一个结点及它的后一个结点。最后试着找到反转后链表的头结点。

//链表的结点定义如下:
#include<iostream>
using namespace std;

struct ListNode
{
int m_key;
ListNode* m_next;
};
ListNode* Reverse(ListNode*head)
{
if(head==NULL)
return NULL;
ListNode*pReHead=NULL;//反转之后的结点
ListNode*p=head;
ListNode*pPrev=NULL;//前一个结点
while(p!=NULL)
{
ListNode*pNext=p->m_next;//它的后一个结点
if(pNext==NULL)//就1个结点
pReHead=p;
p->m_next=pPrev;
pPrev=p;
p=pNext;
}
return pReHead;
}


 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: