Hey, I'm still in the process of learning C and need some help. So I'm working with data structures and having trouble making a tree of strings where every node has a passengers name, number of the city they are at and number of the the city they want to go to. the tree is aligned by the passengers names.
My problems are how to deal with the name string and inserting the passenger that i read into the tree.
This is what I came up with till now.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 50
struct passengerNode{
char *name;
int currentCity;
int destination;
struct passengerNode *leftPtr;
struct passengerNode *rightPtr;
};
typedef struct passengerNode PassengerNode;
typedef PassengerNode *PassengerNodePtr;
PassengerNodePtr readPassenger(void);
void insertPassenger(PassengerNodePtr *passengerPtr,char *name);
int main(int argc, char*argv[]){
PassengerNodePtr newPass;
newPass = readPassenger();
insertPassenger(&newPass,newPass->name);
return 0;
}
PassengerNodePtr readPassenger(void){
PassengerNodePtr pass = malloc(sizeof(struct passengerNode));
printf("Name: ");
fgets(pass->name,MAX,stdin);
printf("Source city: ");
scanf("%d",&(pass->currentCity));
printf("destination city: ");
scanf("%d",&(pass->destination));
return pass;
}
void insertPassenger(PassengerNodePtr *passengerPtr, char *name){
if(*passengerPtr == NULL){
*passengerPtr = malloc(sizeof(struct passengerNode));
if (*passengerPtr !=NULL){
(*passengerPtr )->leftPtr = NULL;
(*passengerPtr )->rightPtr = NULL;
}else{
if(strcmp(name,(*passengerPtr)->name)== -1){
insertPassenger(&(*passengerPtr)->leftPtr, name);
}else if(strcmp(name,(*passengerPtr)->name) == 1 || strcmp(name,(*passengerPtr)->name) == 0){
insertPassenger(&(*passengerPtr)->rightPtr,name);
}
}
}
}