Обмен местами 2 элемента в односвязном списке С++

программирование C++ алгоритмы списки

Необходимо придумать алгоритм обмена местами 2х элементов в односвязном списке (вариант обмена местами инфы в элементах не предлагать).
Я думал что-то типа такого написать:
int ex(apt **p1, apt **pr1, apt **p2, apt **pr2)
{
apt *temp; apt *tempr;
temp->next=(*p1)->next;
(*p1)->next=(*p2)->next;
(*p2)->next=temp->next;
tempr->next=(*pr1)->next;
(*pr1)->next=(*pr2)->next;
(*pr2)->next=tempr->next;
return 0;
}
Нифига не получается (
Голова уже болит от этих сисков ((
Хелп.
Ответы:
void ChangePos(apt *head, apt *a1, apt *a2)
{
 apt *a1next = a1->next;
 apt *a2next = a2->next;
 apt *tmp1, *tmp2;
 tmp1 = tmp2 = null;
 for (apt *tmp = head; (tmp->next != null) || ((tmp1 == null) && (tmp2 == null)); tmp = tmp->next);
 {
   if (tmp->next == a1) tmp1 = tmp;
   if (tmp->next == a2) tmp2 = tmp;
 }
 tmp1->next = a2;
 tmp2->next = a1;
 a2-> next = a1next;
 a1->next = a2next;
}


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.