Salve devo svolgere questo esercizio ma non capisco dove sto sbagliando...devo implementare la seguente interfaccia:
typedef struct list* list_l;
list_l *createList(); // crea una lista vuota
int destroyList(list_l *L); // libera tutta la memoria allocata dalla lista
int insertList(list_l *L, const char *); // inserisce una parola nella lista
void printList(list_l *L); // stampa tutta la lista
questa l'ho salvata in un file chiamato libList.h
poi li ho implementati così:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "libList.h"
typedef struct list{
const char word[1024];
struct list *next;
}list_l;
list_l *createList(){
list_l *head=NULL;
return head;
}
int destroyList(list_l *L){
if(L==NULL){
return -1;
}
while(L!=NULL){
list_l *occ=L->next;
free(L);
L=occ;
}
return 0;
}
int insertList(list_l *L, const char *c){
list_l *new=malloc(sizeof(list_l));
if(L==NULL){
L=new;
return 0;
}
list_l *occ=L;
list_l *prev=NULL;
strcpy(new->word,c);
while(strcmp(occ->word,c)>1){
prev=occ;
occ=occ->next;
}
if(prev==NULL){
new->next=L;
L=new;
}else{
prev->next=new;
new->next=occ;
}
return 0;
}
void printList(list_l *L){
if(L==NULL){
printf("LA LISTA E' VUOTA!!!!\n");
}else{
list_l *occ=L;
while(occ!=NULL){
printf("%s\n",occ->word);
occ=occ->next;
}
}
}
e devo creare in questo modo una libreria statica da utilizzare in qualsiasi proramma esterno....appena compilo l'implementazione dell'interfaccia mi da ad ogni funzione errore:
- implementa.c:9:2: error: conflicting types for ‘list_l’
}list_l;
^~~~~~
In file included from implementa.c:4:0:
libList.h:1:22: note: previous declaration of ‘list_l’ was here
typedef struct list* list_l;
^~~~~~
implementa.c:11:9: error: conflicting types for ‘createList’
list_l *createList(){
^~~~~~~~~~
In file included from implementa.c:4:0:
libList.h:2:9: note: previous declaration of ‘createList’ was here
list_l *createList(); // crea una lista vuota
^~~~~~~~~~
///e lo stesso per le altre....
Dove sto sbagliando??