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;
}