链表反序
时间:2009-05-07 来源:hubo214
struct Node * ReverseList(Node * pHead)
{
Node *p1 = pHead;
/*首指针为空的情况*/
if(p1 == NULL)
return NULL;
Node *p2 = p1->next;
/*首指针的下一个节点为空即只有一个节点的情况*/
if(p2 == NULL)
return p1;
Node *p3 = NULL;
/*至少有两个不为空的节点*/
while(p2 != NULL)
{
p3 = p2->next; /*P3指向P2的下一个节点*/
p2->next = p1; /*p1为p2的前驱,它赋给p2->next则前驱变成了后继,完成了逆转*/
p1 = p2; /*指针向后推移*/
p2 = p3; /*指针向后推移*/
p3 = NULL;
}
pHead->next = NULL;
pHead = p1;
return pHead;
}
{
Node *p1 = pHead;
/*首指针为空的情况*/
if(p1 == NULL)
return NULL;
Node *p2 = p1->next;
/*首指针的下一个节点为空即只有一个节点的情况*/
if(p2 == NULL)
return p1;
Node *p3 = NULL;
/*至少有两个不为空的节点*/
while(p2 != NULL)
{
p3 = p2->next; /*P3指向P2的下一个节点*/
p2->next = p1; /*p1为p2的前驱,它赋给p2->next则前驱变成了后继,完成了逆转*/
p1 = p2; /*指针向后推移*/
p2 = p3; /*指针向后推移*/
p3 = NULL;
}
pHead->next = NULL;
pHead = p1;
return pHead;
}
相关阅读 更多 +