Code:i have a problem trying to fix the following errors with dll.h . I need assistance. dll.h:46: two or more data types in declaration of `dllInit' dll.h:46: two or more data types in declaration of `dllInit' dll.h:46: warning: duplicate `static' dll.h:48: warning: parameter has incomplete type dll.h:52: warning: parameter has incomplete type dll.h:56: parse error before "dllForIter" dll.h:58: parse error before "f" dll.h:60: parse error before "a" dll.h:63: parse error before "dllRevIter" dll.h:65: parse error before "f" dll.h:67: parse error before "a" dll.c: In function `NodeInit': dll.c:5: invalid type argument of `->' dll.c:6: invalid type argument of `->' dll.c:7: invalid type argument of `->' my code is as shown below, dll.h dll.c #include <stdio.h> #include <stdlib.h> //dll.h //The following two lines (and the last) prevent class dll //from being defined more than once even if the file is //included more than once #ifndef dll_h #define dll_h //The following is the defirnation of the struct //and the methods are defines in matching .c file struct node { void *v; int *head; int *tail; }; typedef struct node node; typedef struct dll{ int sorted; struct node *head; struct node *tail; int size; int (*compare)(void*, int, void*, int); }dll; /* st */ static struct dllForIter{ struct node *temp; }; /* current node */ //static node *cur=NULL; /* Reverse Iterator */ static struct dllRevIter{ struct node *temp; }; void NodeInit(node n, void *v); void dllInit(dll *i, int (*compare)(void*, int, void*, int), int a); int dllAdd(dll d,void v, int b); int dllSize(dll s); int dllHas(dll h,void v,int l); void dllFinalize(dll v); void dllForInit(dll f,dllForIter i); void dllForHasNext(dllForIter f); void dllForNext(dllForIter a,int s); void dllRevInit(dll r,dllRevIter i); void dllRevHasNext(dllRevIter f); void dllRevNext(dllRevIter a,int s); #endif #include "dll.h" void NodeInit(struct node n, void *v){ n->num=v; n->tail=0; n->head=0; } void dllInit( dll *d, int (*compare)(void*, int, void*, int),int i){ d->compare=compare; d->sorted=i; d->size=0; struct node *head=malloc(sizeof(struct node)); char *a=malloc(4); a="head"; NodeInit(head,a); head->head=1; d->head=head; struct node *tail=malloc(sizeof(struct Node)); char *b=malloc(4); b="tail"; NodeInit(tail, b); tail->tail=1; d->tail=tail; d->head->next=d->tail; d->tail->prev=d->head; } void dllForInit(struct dll *dl, struct dllForIter *dfi){ dfi->cur=dl->head; } void dllRevInit(struct dll *dl, struct dllRevIter *dri){ dri->cur=dl->tail; } void dllAdd(struct dll *dl, void *v, int s){ where->size++; struct node *cur; current=(dl->head->next); struct node *newNode=malloc(sizeof(struct node)); NodeInit(newNode,v); while(!cur->tail){ if(!dl->sorted) cur=cur->next; else if(dl->compare(cur->num,sizeof(cur->payload),newNode->num,sizeof(newNode->num))<0) cur=cur->next; else break; } newNode->next=cur; newNode->prev=cur->prev; cur->prev->next=newNode; cur->prev=newNode; } int dllSize(struct dll *dl){ return where->size; } int dllHas(struct dll *dl, void *v , int s){ struct node *cur=dl->head->next; while(dl->compare(current->num,sizeof(current->num),v,s)!=0){ if(cur->tail) return 0; cur=cur->next; } return 1; } void dllFinalize(struct dll *dl){ free(dl); } int dllForHasNext(struct dllForIter *dfi){ return(!dfi->cur->next->tail); } void* dllForNext(struct dllForIter *dfi, int *s){ dfi->cur=dfi->cur->next; *s=sizeof(dfi->cur->num); return dfi->cur->num; } int dllRevHasNext(struct dllRevIter *dri){ return(!dri->cur->prev->head); } void* dllRevNext(struct dllRevIter *dri, int *s){ dri->cur=dri->cur->prev; *s=sizeof(where->cur->num); return dri->cur->num; } void printdll(struct dll *dl){ struct node *cur=this->head; while(cur->tail==0){ printf("%s, ",cur->num); cur=cur->next; } printf("%s\n",cur->num); } int compare( void* p, int m, void* q, int n){ return strncmp((char*)p, (char*)q, n); } int main(){ int i=2; dll m; dllInit(&m, compare, 0); dllAdd(&m, "a", 2); dllRevIter r; dllRevInit(&m, &r); dllRevNext(&r,&i); dllRevNext(&r,&i); printf("%i",r.current->head); }