[求助]如何实现单链表的倒置?
这是我的程序,我不明白它是如何实现除头结点以外其它结点是如何实现倒置的?
void converse(LinkList *head)
{
LinkList *p,*q;
p=head->next;
head->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=head->next;
head->next=p;
p=q;
}
void fanxu_link_list(node **head)/*尾插反序*/
{ node *p;
node *pre;
node *p1;
p1=*head;
if(p1==NULL) {printf("The link is empty!");exit(1);}
p=p1->next; p1->next=NULL;
if(p!=NULL)pre=p;
while(p!=NULL)
{ p=p->next;
pre->next=p1;
p1=pre;
pre=p;
}
*head=p1;
}
void daozhilink(node **head) /***头插反序*****/
{ node *p1,*p2;
node *p3;
p3=*head;
if(p3==NULL) printf("The link is empty!");
else p1=p3->next;
p2=p1->next;p3->next=NULL;
while(p1!=NULL)
{ p1->next=p3;
p3=p1;
p1=p2;
p2=p2->next;
}
*head=p3;
}
我还是看我自己的这个程序,假设我有head,a1,a2,a3这几个结点,我不明白最后一个a3如何成为head->next的,希望各位高手能够一步一步的说明,我先谢谢各位了!