Я пытаюсь добавить узел в конец связанного списка. Я использую функцию void и передаю свою структуру в нее, но как только она прошла через функцию добавления, моя структура все еще пуста. вот код.
struct part {
char* name;
float price;
int quantity;
struct part *next;
};
typedef struct part partType;
void addEnd(partType *item) {
partType *temp1=NULL, *temp2=NULL;
char temp[100];
temp1 = (struct part *)malloc(sizeof(partType));
if (!temp1)
printf("malloc failed\n");
temp1->name = malloc(sizeof(char)*100);
printf("Please enter item name: \n");
fgets(temp, 100, stdin);
strcpy(temp1->name, temp);
printf("Please enter item price: \n");
fgets(temp, 100, stdin);
sscanf(temp, "%f", &temp1->price);
printf("Please enter item quantity: \n");
fgets(temp, 100, stdin);
sscanf(temp, "%d", &temp1->quantity);
// Copying the Head location into another node.
temp2 = item;
if (item == NULL) {
// If List is empty we create First Node.
item = temp1;
item->next = NULL;
printf("%s%.2f\n%d\n", item->name, item->price, item->quantity);
} else {
// Traverse down to end of the list.
while (temp2->next != NULL)
temp2 = temp2->next;
// Append at the end of the list.
temp1->next = NULL;
temp2->next = temp1;
printf("%s%.2f\n%d\n", item->name, item->price, item->quantity);
}
}
Элемент
равен нулю, когда он изначально передается в функцию, но по какой-то причине получается нулевым, даже если у меня есть оператор if, который устанавливает элемент равным temp1.