bro let me give you the complete syntax i solved...it shows me some error like " [Linker error] undefined reference to `search_distination_duplicate(Airport_LIST*, char*)'"
my complete code is...
Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
typedef struct TAG_LIST{
char flight[10];
char departure[3];
char arrival[3];
struct TAG_LIST *next;
}LIST_TYPE;
typedef struct distination_LIST{
char arrival_airport[3];
struct distination_LIST *next;
}distination_LIST;
typedef struct Airport_LIST{
int count_flight;
char airport_departure[3];
struct distination_LIST *destination;
struct Airport_LIST *next;
}Airport_LIST;
LIST_TYPE *create_list(FILE *fp);
LIST_TYPE *Add_to_tail(LIST_TYPE *list1,LIST_TYPE *list2);
void print_list(Airport_LIST *list);
void print_file(LIST_TYPE *list);
Airport_LIST *order_airport(LIST_TYPE *list);
int search_airport_duplicate(Airport_LIST *list,char *s);
Airport_LIST *ordered_insertion(Airport_LIST *List_a,Airport_LIST *list_a_tem);
distination_LIST *add_head_d(distination_LIST *dest,distination_LIST *list_dest);
int search_distination_duplicate(Airport_LIST *dest,char *s);
main()
{
FILE * fp;
LIST_TYPE *file_list;
Airport_LIST *pnt_list_airport;
printf("PRINTS FROM THE LIST OF AIRPORTS\n");
fp=fopen("flights.txt","r");
if(fp==NULL)
printf("Sorry Error In reading the File\n");
else
{
file_list=create_list(fp);
fclose(fp);
if(file_list!=NULL)
{
print_file(file_list);
pnt_list_airport=order_airport(file_list);
print_list(pnt_list_airport);
}
else
printf("List is Not Created\n");
}
}
LIST_TYPE *create_list(FILE *fp)
{
char temp_line[40];
LIST_TYPE *headlist,*list;
headlist=NULL;
while(fgets(temp_line,40,fp)!=NULL)
{
list=(LIST_TYPE *)malloc(sizeof(LIST_TYPE));
sscanf(temp_line,"%s%s%s",list->flight,list->departure,list->arrival);
headlist=Add_to_tail(headlist,list);
}
return headlist;
}
LIST_TYPE *Add_to_tail(LIST_TYPE *list,LIST_TYPE *item)
{
LIST_TYPE *pntlist;
pntlist=list;
if(pntlist==NULL)
{
pntlist=item;
item->next=NULL;
list=pntlist;
}
else
{
while(pntlist->next!=NULL){
pntlist=pntlist->next;}
pntlist->next=item;
item->next=NULL;
list=pntlist;
}
return list;
}
void print_file(LIST_TYPE *pnt_list)
{
LIST_TYPE *list;
list=pnt_list;
printf("................File List.................\n\n\n");
while(list!=NULL)
{
printf("\t%.6s\t",list->flight);
printf("\t%.3s\t",list->departure);
printf("\t%.3s\n",list->arrival);
list=list->next;
}
}
Airport_LIST * order_airport(LIST_TYPE *headlist)
{
LIST_TYPE *file_line,*scan_list;
file_line=headlist;
Airport_LIST *list_a,*list_a_temp;
distination_LIST *list_d_temp;
while(file_line!=NULL)
{
scan_list=headlist;
if(search_airport_duplicate(list_a,file_line->departure)==0)
{
list_a_temp=(Airport_LIST *)malloc(sizeof(Airport_LIST));
strcpy(list_a_temp->airport_departure,file_line->departure);
list_a_temp->count_flight=0;
list_a_temp->next=NULL;
while(scan_list!=NULL)
{
if(strncmp(file_line->departure,scan_list->departure,3)==0)
{
if(search_distination_duplicate(list_a_temp,scan_list->arrival)==0)
{
list_a_temp->count_flight++;
//now create a new distination
list_d_temp=(distination_LIST *)malloc(sizeof(distination_LIST));
strcpy(list_d_temp->arrival_airport,scan_list->arrival);
list_a_temp->destination=add_head_d(list_a_temp->destination,list_d_temp);
}
}
scan_list=scan_list->next;
}
list_a=ordered_insertion(list_a,list_a_temp);
}
file_line=file_line->next;
}
return list_a;
}
int search_airport_duplicate(Airport_LIST *list,char s[])
{
Airport_LIST *pntlist;
pntlist=list;
int dup=0;
while(pntlist!=NULL)
{
if(strncmp(pntlist->airport_departure,s,3)==0)
dup++;
pntlist=pntlist->next;
}
if(dup!=0)
return 1;
else
return 0;
}
int search_destination_duplicate(Airport_LIST *list,char *s)
{
distination_LIST *pntlist;
pntlist=list->destination;
int dup=0;
while(pntlist!=NULL)
{
if(strncmp(pntlist->arrival_airport,s,3)==0)
dup++;
pntlist=pntlist->next;
}
if(dup!=0)
return 1;
else
return 0;
}
distination_LIST *add_head_d(distination_LIST *dest,distination_LIST *list_dest)
{
distination_LIST *temp;
temp=dest;
dest=list_dest;
list_dest->next=temp;
return dest;
}
Airport_LIST *ordered_insertion(Airport_LIST *List_a,Airport_LIST *list_a_tem)
{
Airport_LIST *pntlist,*temp,*prev_list;
pntlist=List_a;
if(pntlist!=NULL)
{
pntlist=list_a_tem;
list_a_tem->next=NULL;
return pntlist;
}
else if(list_a_tem->count_flight<=pntlist->count_flight)
{
temp=pntlist;
pntlist=list_a_tem;
list_a_tem->next=temp;
return pntlist;
}
else
{
prev_list=pntlist;
pntlist=pntlist->next;
while(pntlist!=NULL && (list_a_tem->count_flight > pntlist->count_flight))
{
prev_list=pntlist;
pntlist=pntlist->next;
}
temp=prev_list->next;
prev_list->next=temp;
list_a_tem->next=temp;
return List_a;
}
}
void print_list(Airport_LIST *list)
{
Airport_LIST *pntlist;
pntlist=list;
while(pntlist!=NULL)
{
printf(" %.3s",pntlist->airport_departure);
while(pntlist->destination!=NULL)
{
printf("\t\t %.3s\n",pntlist->destination->arrival_airport);
pntlist->destination=pntlist->destination->next;
}
printf("\n");
pntlist=pntlist->next;
}
}