Обмен узлами в связанном списке
Я пытаюсь поменять местами два соседних узла в связанном списке, и я думаю, что понимаю идею, как это сделать, используя временный узел.
Вот моя структура подкачки
struct part {
char* name;
float price;
int quantity;
struct part *next;
};
typedef struct part partType;
partType *swap_node(partType **item) {
partType *temp;
temp = *item;
*item = (*item)->next;
temp->next = (*item)->next;
(*item)->next = temp;
return *item;
}
Я не могу думать о том, как сделать так, чтобы предыдущий узел в списке указывал на новый переставленный узел. Нужна ли мне другая временная переменная? Кроме того, как мне учесть случай, когда два узла, подлежащие обмену, являются первыми двумя в списке.