У меня проблемы с моим кодом.Как вы можете видеть ниже, я должен составить список, используя технику связанного списка.Моя проблема в том, что когда я печатаю s-> item вне функции add () после ее выполнения, программа вылетает.Когда я печатаю s-> item внутри функции add () , он печатает правильные данные.Почему Statistician s снова становится нулевым, даже если его инициализация находится вне цикла while?
Пожалуйста, не обращайте внимания на typedef, они даются нашим инструктором, и мы должныиспользуйте его в качестве основы, поэтому нам не нужно ничего менять с помощью typedef и структур.
typedef struct node *nodePtr;
struct node {
int item;
nodePtr next;
};
typedef nodePtr Statistician;
Statistician newStatistician(){
Statistician s = (Statistician)malloc(sizeof(Statistician));
s = NULL;
return s;
}
void add(Statistician s, int x){
Statistician newNode = (Statistician)malloc(sizeof(Statistician));
if(s == NULL){ // first node
printf("first");
newNode->next = NULL;
newNode->item = x;
s = newNode;
main(){
int menuChoice, clearDataChoice, x, outputInt, exitChoice, check;
float outputFloat;
Statistician s = newStatistician();
while (TRUE){
printf("\t\t*** STATISTICIAN PROGRAM v1 ***\n\n\n");
printf("Please enter data to be added : ");
x = inputNum();
add(s, x);
printf("%d", s->item);
//... bunch of other code
if(exitChoice==TRUE)
return 0;
else{
printf("\n\nPress any key to continue...");
getch();
system("cls");
fflush(stdin);
continue;
}
}
EDIT: add и main - это две разные функции
void add(Statistician s, int x){}
main(){}