大佬们C语言链表例题有些看不懂,麻烦大佬们打点注释

//实现对一个单链表的倒置并输出控制台
#include
#include
#define NULL 0
struct node{
int num;
struct node next;
};
int main()
{
int i;
struct node *L,*s,*p,*q,*k,*h;
L=(node
)malloc(sizeof(struct node));
//L->num=NULL;
p=L;
printf("请输入\n");
for(i=0;i {
s=(node*)malloc(sizeof(struct node));
scanf("%d",&s->num);
p->next=s;
p=s;
}
p->next=NULL;//建立和输入
p=L;
printf("输入的元素");
for(i=0;i {
printf("%d\t",p->next->num);
p=p->next;

}
printf("\n");
p=L;
while(p->next->next!=NULL)
p=p->next;
q=p->next;
q->next=p;
p->next=NULL;
p=L;
for(i=0;i {
while (p->next->next!=NULL)
p=p->next;
k=p->next;
k->next=p;
p->next=NULL;
p=L;

}
L->next=q;//链表的倒置
p=L->next;
printf("倒置后输出");
while(p!=NULL)
{
printf("%d\t",p->num);
p=p->next;
} //倒置后输出
}

http://www.cnblogs.com/tinya/archive/2015/05/18/4511154.html