我编写的代码,显示ld returned 1 exit status,请问这个代码的问题在哪里?

#include "stdio.h"
#include "stdlib.h"
#define NULL2 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
    int num;
    int age;
    struct stu *next;
};
TYPE *creat(int n)
{
    struct stu *head,*pf,*pb;
    int i;
    for(i=0;i<n;i++)
    {
        pb=(TYPE*)malloc(LEN);
        printf("input Number and age:\n");
        scanf("%d %d",&pb->num,&pb->age);
        if(i==0)
        {
            pf=head;
            head=pb;
        }
        else
        {
            pf->next=pb;
            pb->next=NULL2;
            pf=pb;
        }
    }
    return(head);
}

create(int n)函数修改如下:

TYPE *creat(int n)
{
	struct stu *head,*pf,*pb;
	int i;
	for(i=0;i<n;i++)
	{
		pb=(TYPE*)malloc(LEN);
		printf("input Number and age:\n");
		scanf("%d %d",&pb->num,&pb->age);
		pb->next=NULL2;
		if(i==0)
		{
			head=pb;
			pf=head;
			
		}
		else
		{
			pf->next=pb;
			pf=pb;
		}
	}
	return(head);
}