Обмен узлами в связанном списке

Я пытаюсь поменять местами два соседних узла в связанном списке, и я думаю, что понимаю идею, как это сделать, используя временный узел.

Вот моя структура подкачки

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;
}

Я не могу думать о том, как сделать так, чтобы предыдущий узел в списке указывал на новый переставленный узел. Нужна ли мне другая временная переменная? Кроме того, как мне учесть случай, когда два узла, подлежащие обмену, являются первыми двумя в списке.

Ответы на вопрос(5)

Ваш ответ на вопрос