This is the code
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct S_RacingCar{
char name[8];
int speed;
struct S_RacingCar *next;
struct S_RacingCar *prev;
} RacingCar;
//The method with problems
int GetNumberOfElements(RacingCar *start){
RacingCar *currentCar = start;
int count = 0;
while(currentCar != NULL){
count++;
currentCar = currentCar->next;
}
return count;
}
//Adding the car
RacingCar *AddCar(RacingCar *previous){
printf("Enter name and speed: ");
char input[16];
fgets(input,15,stdin);
RacingCar *newCar = malloc(sizeof(RacingCar));
sscanf(input,"%s %d",newCar->name, &newCar->speed);
printf("Added: %s Speed: %d\n\n",newCar->name,newCar->speed);
newCar->next = NULL;
newCar->prev = NULL;
if(previous != NULL){
previous->next = newCar;
newCar->prev = previous;
}
return newCar;
}
int main()
{
char command[16];
char input[16];
char name[16];
RacingCar *start = NULL;
RacingCar *newest = NULL;
while(fgets(input,15,stdin)){
sscanf(input,"%s",command);
if(strncmp(command,"quit",4) == 0){
printf("\n\nBreaking...\n\n");
break;
}else if(strncmp(command,"print",5) == 0){
PrintList(start);
}else if(strncmp(command,"add",3) == 0){
if(start == NULL){
start = AddCar(NULL);
newest = start;
}else{
newest = AddCar(newest);
}
//where i call the problem method
}else if(strncmp(command,"test",4) == 0){
int test = GetNumberOfElements(start);
printf("%d",test);
}
}
return 0;
}