Поменяйте местами узлы в односвязном списке

Я пытаюсь поменять местами два узла. Например, если узлыa а такжеb Я передаю указатели

(a-1)->next а также(b-1)->next которые в основном узлыa а также .b

void swap(struct stack **a,struct stack **b)
{
    struct stack *temp1 = *a, *temp2 = *b, *temp3 = *b;      
    *a = *b; 
    (*b)->next = (temp1)->next;
    temp2 = temp1;
    (temp2)->next = temp3->next;
}

Что я делаю неправильно? Когда я пытаюсь распечатать узлы после вызова функции, это 'это бесконечный цикл. Пожалуйста помоги.

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

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