您的位置:首页 > 其它

反转链表

2015-09-28 09:23 375 查看
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的投结点。

struct ListNode{
int m_nKey;
ListNode* m_pNext;
}


方法1:定义3个指针,分别指向当前遍历到的结点、它的前一个结点及后一个结点。

ListNode* ReverseList(ListNode* pHead){
ListNode* pReversedHead = NULL;
ListNode* pNode = pHead;
ListNode* pPrev = NULL;
while (pNode != NULL){
ListNode* pNext = pNode->m_pNext;

if (pNext == NULL){
pReversedHead = pNode;
}

pNode->m_pNext = pPrev;

pPrev = pNode;
pNode = pNext;
}

return pReversedHead;
}


测试用例

功能测试(输入的链表含有多个结点,链表中只有一个结点)

特殊输入测试(链表头结点为NULL指针)

扩展:用递归实现同样的反转链表的功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表