This is my code. The types are identical as far as I can see... If anyone could point out the error I'd be grateful. By the way I'm trying to implement a very simple singly-linked list. Any comments or suggestions would are kindly welcomed. Thanks! Code: #include <stdio.h> #include <stdlib.h> //void list_insert (int k, struct node* head, struct node* curr); int main() { struct node { int numdata; struct node* next; }; struct node* head; struct node* curr; head=NULL; curr=NULL; list_insert(1, head, curr); list_insert(2, head, curr); list_insert(3, head, curr); return 0; } void list_insert (int k, struct node* head, struct node* curr) { curr->numdata=k; curr->next=head; head=curr; } void show_list(node* head) { node* curr; curr=head; printf("\n"); while(curr!=NULL) printf("%d ",curr->numdata); printf("end of list\n") } ***************** It says: "conflicting types for 'list_insert.' " Why?
Well, you have declared Structure Node inside the main method so the declaration is visible only to the main method. Rest of teh compiler doesn't know what a node is, so in order to use this in all the functions of your program just declare it out side the main block....and your problem should be solved.
Also why is the prototype commented out? Without this the compiler will assume list_insert is defined Code: int list_insert(); so if you don't want that, use prototypes and DON'T comment them out.