标签:
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义如下:
1 struct ListNode{ 2 3 int m_nKey; 4 ListNode* m_pNext; 5 6 };
解析:注意的问题1、输入链表的头指针为NULL或者整个链表只有一个节点时,程序会崩溃;2、输入的链表只有一个节点;3、反转后链表出现断裂;4、对链表指针的操作顺序
1 struct ListNode{ 2 int m_nKey; 3 ListNode* m_pNext; 4 }; 5 6 ListNode* ReverseList(ListNode* pListHead){ 7 if(pListHead == NULL) 8 return NULL; 9 ListNode* pReverseNode = NULL;//用来做反转后的头结点 10 ListNode* pPrevNode = NULL;//指向当前节点的前一个节点 11 ListNode* pNode = pListHead;//当前节点 12 while(pListHead->m_pNext!=NULL){ 13 ListNode* pNextNode = pNode->m_pNext;//保存当前节点的下一个节点,避免出现断裂的情况 14 if(pNextNode == NULL) 15 pReverseNode = pNode; 16 pNode->m_pNext = pPrevNode; 17 pPrevNode = pNode; 18 pNode = pNextNode; 19 } 20 return pReverseNode; 21 }
标签:
原文地址:http://www.cnblogs.com/yangrenzhi/p/5780922.html