第一回写头函数,求大神帮助

第一次写头函数,求大神帮助
问题如图第一回写头函数,求大神帮助第一回写头函数,求大神帮助下面是程序
//此头函数用于存放对线性表操作的函数
#ifndef LINEAR_H_INCLUDED
#define LINEAR_H_INCLUDED
#define LIST_INIT_SIZE 100
#define LISTINCERMENT  10
extern typedef int elemtype;
extern typedef struct
//用于指向线性表地址,并保存线性表的长度与空间大小
    {
            elemtype *elem;    //用于存放线性表首地址
            int length;        //用于存放线性表中的数据个数
            int listsize;      //用于存放线性表的总单元个数
    }sqlist;
 
extern void Linear_initlist(sqlist L);
extern void Linear_listinsert(sqlist L,int i,elemtype e);
extern void Linear_listdelete(sqlist L,int i);
extern void Linear_listmerge(sqlist la,sqlist lb,sqlist lc);
extern void Linear_listintersect(sqlist la,sqlist lb,sqlist lc);
extern void Linear_listexcept(sqlist la,sqlist lb,sqlist lc);
 
extern void Linear_initlist(sqlist L)
//此函数用于创建空的线性表
    {
            L.elem=(elemtype*)malloc(LIST_INIT_SIZE*sizeof(elemtype));
            if(!L.elem)
                exit(-1);
            L.length=0;
            L.listsize=LIST_INIT_SIZE;
    }//Linear_initlist
 
extern void Linear_listinsert(sqlist L,int i,elemtype e)
//此函数用于向线性表中第i个位置插入插入一个新元素e
    {
            elemtype *newbase;
            elemtype *q,*p;
            if(i<1||i>L.length+1)
                exit(-1);
            if(L.length>=L.listsize)
            {
                    newbase=(elemtype*)realloc(L.elem,(L.listsize+LISTINCERMENT)*sizeof(elemtype));
                    if(!newbase)
                        exit(-1);
                    L.elem=newbase;
                    listsize+=LISTINCERMENT;
            }
            q=&(L.elem[i-1]);
            for(p=&(L.elem[L.length-1]);p>=q;p--)
                *(p+1)=*p;
            *q=e;
            ++L.length;
    }//Linear_listinsert
 
extern void Linear_listdelete(sqlist L,int i)
//此函数用于将线性表中第i个元素删除
    {
            elemtype *q,*p;
            if(i<1||i>L.length+1)
                exit(-1);
            q=l.elem+i-1;
            for(p=q;p<L.elem+L.length-1;p++)
            {
                    *p=*(p+1);
            }
            --L.length;
    }//Linear_listdelete
 
extern void Linear_listmerge(sqlist la,sqlist lb,sqlist lc)
//此函数用于将la和lb线性表取并集,并将数据存于lc表中
    {
            elemtype *pa,*pb,*pc;
            int i=0;    //用于记录lc表中元素个数
            pa=la.elem;
            pb=lb.elem;
            lc.listsize=la.length+lb.length;
            lc.elem=(elemtype*)malloc(lc.listsize*sizeof(elemtype));
            if(!lc.elem)
                exit(-1);
            pc=lc.elem;
            while(pa<=la.elem+la.length-1&&pb<=lb.elem+lb.length-1)
            {
                   if(*pa<*pb)
                        *pc++=*pa++;
                   else
                   {
                           if(*pa>*pb)
                                *pc++=*pb++;
                           else
                           {
                                   *pc++=*pa++;
                                   pb++;
                           }
                   }
                   i++;
            }
            while(pa<la.elem+la.length-1)
            {
                    *pc++=*pa++;
                    i++;
            }
            while(pb<lb.elem+lb.length-1)
            {
                    *pc++=*pb++;
                    i++;
            }
            lc.length=i;
    }//Linear_listmerge
 
extern void Linear_listintersect(sqlist la,sqlist lb,sqlist lc)
//此函数用于将la和lb线性表取交集,并将数据存于lc表中
    {
            elemtype *pa,*pb,*pc;
            int i=0;    //用于记录lc表中元素个数
            pa=la.elem;
            pb=lb.elem;
            lc.listsize=la.length+lb.length;
            lc.elem=(elemtype*)malloc(lc.listsize*sizeof(elemtype));
            if(!lc.elem)
                exit(-1);
            pc=lc.elem;
            while(pa<=la.elem+la.length-1&&pb<=lb.elem+lb.length-1)
            {
                    if(*pa<=*pb)
                    {
                            if(*pa==*pb)
                            {
                                    *pc++=*pa++;
                                    pb++;
                                    i++;
                            }
                            else pa++;
                    }
                    if(*pa>*pb)
                    {
                            if(*pa==*pb)
                            {
                                    *pc++=*pb++;
                                    pa++;
                                    i++;
                            }
                            else pb++;
                    }
            }
            lc.length=i;
    }//Linear_listintersect
 
extern void Linear_listexcept(sqlist la,sqlist lb,sqlist lc)
//此函数将用线性表lb对la取差集,并将数据存于lc表中。
    {
            sqlist ld;
            elemtype *pa,*pc,*pd;
            elemtype *pa1;
            int i=0;    //用于记录lc表中元素个数
            pa=la.elem;
            pd=ld.elem;
            lc.listsize=la.length;
            lc.elem=(elemtype*)malloc(lc.listsize*sizeof(elemtype));
            if(!lc.elem)
                exit(-1);
            pc=lc.elem;
            Linear_listintersect(sqlist la,sqlist lb,sqlist ld);
            while(pd<=ld.elem+ld.length-1)
            {
                    if(*pa==*pd)
                    {
                            pa1=pa;
                            while(pa1<la.elem+la.length-2)
                            {
                                    *pa1++=*(pa1+1);
                            }
                            la.length--;
                            pd++;
                    }
                    pa++;
            }
            lc=la;
    }
 
#endif // LINEAR_H_INCLUDED

------解决思路----------------------
typedef前的extern去掉

函数原型放在头文件中
函数实现放在.C文件中

函数原型前的extern也是多余的,默认就是extern
函数实现前不需extern