带头结点的单链表逆置程序
我写了一个带头结点的单链表逆置程序,程序的执行结果没什么问题,只是要高手指点一下我写的代码有没有哪里不规范的地方?
/****************************************************************
* 文件名:nz.c (nz就是逆置!)
* 文件描述:带头结点的单链表逆置
* 创建人:沁园枫
* 创建时间:2006年2月2日
****************************************************************/
#include "stdio.h"
typedef struct Dlb /*单链表结点*/
{
int data; /*数据域*/
struct Dlb *link; /*指针域*/
}Dlb;
void main() /*主函数*/
{
Dlb *xjlb(); /*声明xjlb(新建链表)函数*/
Dlb *nzlb(Dlb *); /*声明nzlb(逆置链表)函数*/
Dlb *h,*p;
h=xjlb(); /*调用xjlb(新建链表)函数*/
p=h;
while(p->link!=NULL)/*输出新建单链表后的各元素*/
{
printf("%d",p->link->data);
p=p->link;
}
printf("\n");
h=nzlb(h); /*调用nzlb(逆置链表)函数*/
while(h->link!=NULL)/*输出逆置后的单链表各元素*/
{
printf("%d",h->link->data);
h=h->link;
}
getch(); /*调用getch函数,不知道什么意思的自己查查!*/
}
Dlb *xjlb() /*新建链表函数*/
{
Dlb *h,*l,*a;
int i;
h=(Dlb *)malloc(sizeof(Dlb));
h->link=NULL;
a=h;
for(i=0;i<5;i++)
{
l=(Dlb *)malloc(sizeof(Dlb));
l->data=i;
a->link=l;
a=a->link;
}
a->link=NULL;
return h;
}
Dlb *nzlb(Dlb *h) /*逆置链表函数*/
{
Dlb *p,*q;
p=h->link;
h->link=NULL;
while(p!=NULL)
{
q=p;
p=p->link;
q->link=h->link;
h->link=q;
}
return h;
}