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

反转链表

2015-05-14 20:57 148 查看
定义一个函数,输入一个链表的头结点,反转该链表,并输出反转后链表的头结点。

 链表结点定义如下:
struct ListNode{
int m_nKey;
struct ListNode* m_pNext;
};
ListNode *ReverseList(ListNode *phead)
{
//定义反转后链表的头结点
ListNode *pReverseHead=NULL;
//指向当前结点的指针变量
ListNode *pNode=phead;
//指向当前结点的前驱结点
ListNode *pPrevNode=NULL;
while(pNode!=NULL)
{
//指向当前结点的后继结点
ListNode *pNext=pNode->m_pNext;
if (pNext==NULL)
{
//当前结点为尾结点,则将其变成头结点
pReverseHead=pNode;
}
//让后面结点指向前面结点
pNode->m_pNext=pPrevNode;
pPrevNode=pNode;
pNode=pNext;
}
return pReverseHead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 刷题