请帮着分析一下这个程序,看不明白:其功能是将带头节点的单链表head倒置后输出
#include<stdio.h>struct node
{ int data;
struct node *next;
};
void f33(struct node *head)
{ struct node *h=head->next,*p,*q= ① NULL ;
while( ② h!=NULL )
{ p=h;
h=h->next;
p->next=q;
③ q-p ;
}
head->next=q;
}
void main( )
{struct node a[5]={{O,&a[1]},{2,&a[2]},{4,&a[3]},{6,&a[4]},{8,NULL}};
struct node *head=a; /*a[0]为头节点*/
f33(head);
head=head->next;
while(head)
{ printf(“%d”,head->data); ④ head=head→next ;
printf(“\n”); }}