Help guys with circluarly linked list
I want to make a circularly linked list taking data from a text file.
It keeps saying that my list is Empty when i try to print it. Is it really empty or is something wrong with the printlist function?
So far I have written this:
Code:
Lics()
{
struct p_item *mylist = NULL;
char letter;
char word[15];
int i, j, length;
FILE *phonetics;
char c[40];
i=0;
phonetics=fopen("ICAO.phon", "r");
if (phonetics == NULL){
printf ("Error opening file\n");
return;
}
else {
while(!feof(phonetics)) {
fscanf(phonetics, "%c", &letter);
fscanf(phonetics, "%s", word);
addnode(mylist, letter, word);
}
}
printf("\n\n");
printlist(mylist);
return;
}
addnode(struct p_item *list, char *letter, char *word[15])
{
struct p_item *newnode, *first=list;
if (list==NULL){
newnode=(struct p_item *)malloc(sizeof(struct p_item));
newnode->p_letter=letter;
strcpy(newnode->p_word, word);
newnode->p_next=newnode;
return newnode;
}
while (list->p_next != first){
list = list->p_next;
}
newnode = (struct p_item *)malloc(sizeof(struct p_item));
list->p_next = newnode;
newnode->p_letter=letter;
strcpy(newnode->p_word, word);
newnode->p_next = first;
return first;
}
printlist(struct p_item *list)
{
struct p_item *first = list;
if (list == NULL){
printf("The circularly linked list is empty!\n");
return;
}
do{
printf("%c %s\n", list->p_letter, list->p_word);
list = list->p_next;
} while(list != first);
}