Siccome ho un altro problema rispetto all'argomento che ho aperto prima sulle librerie sto scrivendo un nuovo post (spero di non andare contro il regolamento)
Ho un problema su un esercizio sulle liste...non riesco ad aggiungere nodi alla mia lista e non riesco a capire il perchè.
Questo è il mio codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10000
typedef struct list{
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));
strcpy(new->word,c);
new->next=NULL;
if(L==NULL){
L=new;
return 0;
}
list_l *occ=L;
list_l *prev=NULL;
while((strcmp(occ->word,c)>1) && (occ!=NULL)){
prev=occ;
occ=occ->next;
}
if(prev==NULL){
new->next=L;
L=new;
}else if(occ==NULL){
prev->next=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;
}
}
}
int main(int argc,char *argv[]){
FILE *in;
list_l *list=createList();
char *st,occ[N];
int t;
in=fopen(argv[1],"r");
while(fgets(occ,N,in)!=NULL){
st=strtok(occ," ");
while(st){
t=insertList(list,st);
if(t!=0){
printf("PAROLA NON INSERITA\n");
return t;
}
st=strtok(NULL," ");
}
}
printList(list);
t=destroyList(list);
return t;
}
quando eseguo il programma con un file di prova.txt mi dice che la lista è vuota al momento della printList...il problema come ho detto all'inizio dopo svariate prove è che non mi aggiunge i nodi alla lista....qualcuno sa aiutarmi?