经典题目,代码如下:
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 struct ListNode { 5 int m_iData; 6 ListNode* m_pNext; 7 }; 8 ListNode* Reverse(ListNode* in_pListNode) { 9 if(in_pListNode == NULL) { 10 return NULL; 11 }else if(in_pListNode->m_pNext == NULL) { 12 return in_pListNode; 13 } 14 ListNode* t_pFirst = in_pListNode->m_pNext; 15 ListNode* t_pSecond = in_pListNode->m_pNext->m_pNext; 16 in_pListNode->m_pNext = NULL; 17 while(t_pFirst != NULL && t_pSecond != NULL) { 18 t_pFirst->m_pNext = in_pListNode; 19 in_pListNode = t_pFirst; 20 t_pFirst = t_pSecond; 21 t_pSecond = t_pSecond->m_pNext; 22 } 23 t_pFirst->m_pNext = in_pListNode; 24 return t_pFirst; 25 } 26 27 int main() { 28 ListNode* t_iListNode = new ListNode(); 29 ListNode* t_iListNodeHead = t_iListNode; 30 for(int i = 1; i < 10; i ++) { 31 t_iListNode->m_iData = i; 32 ListNode* t_iListNodeNext = new ListNode(); 33 t_iListNode->m_pNext = t_iListNodeNext; 34 t_iListNode = t_iListNodeNext; 35 } 36 t_iListNode->m_iData = 10; 37 ListNode* t_iTempListNode =t_iListNodeHead; 38 cout << "链表翻转前:" ; 39 while(t_iTempListNode != NULL) { 40 cout << t_iTempListNode->m_iData << " "; 41 t_iTempListNode = t_iTempListNode->m_pNext; 42 } 43 cout << endl; 44 45 t_iTempListNode = Reverse(t_iListNodeHead); 46 47 cout << "链表翻转后:" ; 48 while(t_iTempListNode != NULL) { 49 cout << t_iTempListNode->m_iData << " "; 50 t_iTempListNode = t_iTempListNode->m_pNext; 51 } 52 cout << endl; 53 system("pause"); 54 return 0; 55 56 57 }