- 37 LinkList reverse_link(LinkListlist)
- 38 {
- 39 if(NULL == list
- 40 || NULL == list->next)
- 41 return list;
- 42
- 43
- 44 LinkList temp,prev,next;
- 45
- 46 prev = list;
- 47 temp = list->next;
- 48 prev->next = NULL;
- 49
- 50 while(temp != NULL)
- 51 {
- 52 next = temp->next;
- 53 temp->next = prev;
- 54 prev = temp;
- 55 temp = next;
- 56 }
- 57 return prev;
- 58 }
-
- ListNode* ReverseIteratively(ListNode* pHead)
- {
- ListNode* pReversedHead = NULL;
- ListNode* pNode = pHead;
- ListNode* pPrev = NULL;
- while(pNode != NULL)
- {
- // get the next node, and save it at pNext
- ListNode* pNext = pNode->m_pNext;
- // if the next node is null, the currect is the end of original
- // list, and it's the head of the reversed list
- if(pNext == NULL)
- pReversedHead = pNode;
- // reverse the linkage between nodes
- pNode->m_pNext = pPrev;
- // move forward on the the list
- pPrev = pNode;
- pNode = pNext;
- }
- return pReversedHead;
- }