链表逆置问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:33:53
void reverse(link *head)//原地置换
{
link *p,*s,*t;
p=head;
s=p->next;
while(s->next!=NULL)//主要置换过程
{
t=s->next;
s->next=p;
p=s;
s=t;
}
s->next=p;
head->next->next=NULL;//收尾
head->next=s;//赋头
}
链表逆置的函数..高手请我给说一下怎么回事呗..初学没有看明白.

链表主要靠NEXT指针找到下一个元素,如果原来A->NEXT指向 B,就B->NEXT指向A,即原来是通过A找到B的,现在是通过B找到A。把除了头结点之外的所有节点进行这样的变换,即可实现逆置。
你的代码中还应该加一个对空链表的特殊处理。