题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点的定义如下:
struct Node
{
int data;
Node *next;
};
Node *ReverseList(Node *pHead)
{
Node *pReveseHead = NULL;
Node * pNode = pHead;
Node * pPrev = NULL;
while(pNode != NULL)
{
Node *pNext = pNode->next;
if(pNext == NULL)
pReverseHead = pNext;
pNode->next = pPrev;
pPrev = pNode;
pNode = pNext;
}
return pReveseHead;
}
//方法二:
Node * ReverseList(Node *head)
{
Node *p1,*p2,*p3;
if(head == NULL)
return NULL;
p1 = head;
p2 = p1->next;
while(p2 != NULL)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head->next = NULL;
head = p1;
return head;
}