链表的综合应用.
nbsp; /*主函数***************///////////////////////////*/void main(){ struct student *head,*stu; long delNum; printf("input records:\n"); head=creat(); /*建立链表,返回头指针*/ print (head); /*调用print()函数输出全部结点*/ printf("\n input the deleted number:"); scanf("%ld",&delNum); /*输入要删除的学号*/ while (delNum!=0) { head=del(head,delNum); /*删除后链表的头地址*/ print(head); /*输出全部结点*/ printf("input the deleted number:"); /*输入要插入的结点*/ scanf("%ld",&delNum); } printf("\n input the inserted record:"); stu=(struct student *)malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); while (stu->num!=0) { head=insert(head,stu); /*插入一个结点,返回头结点地址*/ print(head); /*输出全部结点*/ printf("input the inserted record:"); stu=(struct student *)malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); }}Stu定义为指针变量,在需要插入时先用malloc函数开辟一个内存区,将其起始地址经强制类型转换后赋给stu,然后输入此结构体变量中各成员的值.对不同的插入对象,stu的值是不同的,每次指向一个新的struct student变量.在调用insert函数时,实参为head和stu,将已建立的链表起始地址传给insert函数的形参,将stu(即新开辟的单元的地址)传给形参stud,返回的函数值是经过插入之后的链表的头指针(地址).