Я получил домашнее задание, где мне нужно заполнить все функции.
Теперь, когда я вхожу в 3-й отпечаток, я получаю ошибку, что ptr (переменная) не может получить доступ к данным (раньше, чем он мог?)
Я попытался напечатать значения перед отправкой их в функцию и посмотреть, что она получает, и она получает правильное имя, но в функции что-то напутано
Struct:
typedef struct {
char name[32];
char surname[32];
char id[32];
char position[64];
int salary;
} EmployeeData;
typedef struct tEmployeeNode {
EmployeeData data;
struct tEmployeeNode *next;
} EmployeeNode;
Массив со всеми данными:
EmployeeData data[4] = {
{ "John","Silver","200011123", "Mutineer", 3000 },
{ "David","Livesey","122233345", "Doctor", 7000 },
{ "Jim","Hawkins","201072716", "Cabin Boy", 1000 },
{ "John","Trelawney","122233444", "Squire", 200 } };
Создание узла
EmployeeNode *createEmployeeNode(EmployeeData data) {
EmployeeNode *temp = (EmployeeNode *)malloc(sizeof(EmployeeData));
temp->data = data;
temp->next = NULL;
return temp;
}
Создание функции связанного списка
EmployeeNode *createListOfEmployees(EmployeeData *arr, int size) {
int i;
EmployeeNode *head, *ptr;
EmployeeNode *temp = (EmployeeNode *)malloc(sizeof(EmployeeData));
if (temp == NULL) {
printf("Error\n");
exit(1);
}
temp->data = arr[0];
temp->next = NULL;
head = temp;
ptr = head;
for (i =1; i < size; i++) {
temp = createEmployeeNode(arr[i]);
if (ptr->next != NULL) {
ptr = ptr->next;
}
else {
ptr->next = temp;
temp->next = NULL;
}
}
return head;
}
основная функция printf:
void printListOfEmployees(EmployeeNode *head) {
EmployeeNode *ptr = head;
while (ptr != NULL) {
printEmployee(ptr->data);
ptr = ptr->next;
}
}
внутри функции printf:
void printEmployee(EmployeeData e) {
printf("%s %s %s %s %d\n", e.name, e.surname, e.id, e.position, e.salary);
}
Здесь я на самом деле вызываю функции
EmployeeNode *head = createListOfEmployees(data, 4);
printf("Employees of the Espaniola Team:\n\n");
printListOfEmployees(head);
Результат должен быть:
а. все узлы массива должны быть в структуре с привязанным списком к следующему узлу и печатать все в правильном порядке.
В основном моя проблема в том, что я теряю «Джима Хокинса» и не могу понять, почему.
Спасибо за помощь!