反转链表
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; }