Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Перестановка элементов списка

Ответить
Настройки темы
C/C++ - [решено] Перестановка элементов списка

Аватара для Camaro

Старожил


Сообщения: 296
Благодарности: 38


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Camaro
Дата: 03-06-2013
Уже третий день думаю над одной из лабораторных работ. Задание огромное, у меня уже мозги поплавились, а одного элемента всё ещё не хватает, для того, чтобы закончить работу.
Не могу понять как ссылке на следующий элемент списка присвоить значение ссылки на послеследующий, а ссылке на послеследующий - значение ссылки на предыдущий. Т.е. логику перестановки двух соседних элементов в односвязном/двусвязном списке я понимаю, но не могу понять как именно осуществить это.
Препод на больничном, от одногруппников толку никакого. Программирую на Си, но кое-что разрешили взять из С++.
Объясните пожалуйста.
Если что, вот мой список, точнее его объявление. После он был заполнен указателями на элементы другой структуры (проблем с этим не было)
Код: Выделить весь код
struct STList{char *N;char *group;char *o;STList *Next;STList *Prev;} STL;
STList *Head=NULL;
Тут функция для перестановки 1 и 2 элементов. Естественно, нерабочая. Глаз замылился и уже не вижу в чём дело
Код: Выделить весь код
void EXC1(void)
{
STList *x=new STList; STList *p=new STList;
x=Head; p=Head;
x=x->Next;
p->Next=x->Next;
x->Next=p;
}

Отправлено: 19:50, 03-06-2013

 

Аватара для ViRTaCe

Пользователь


Сообщения: 139
Благодарности: 11

Профиль | Отправить PM | Цитировать


Ошибка в логике. Если мысленно пронумеровать элементы, то мы получим
Код: Выделить весь код
x=Head; p=Head; // x и p  содержат 0-вые элементы
x=x->Next; // x содержит 1-й элемент
p->Next=x->Next; // x содержит 1-й элемет, p ->Next второй элемент.
x->Next=p; // x->Next и p содержат 0-й элемент

-------
Кривые руки исправляются опытом.


Последний раз редактировалось ViRTaCe, 04-06-2013 в 01:11.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:59, 04-06-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


для перестановки 1 и 2 элементов
Код: Выделить весь код
x = Head;
p = Head;
t1 = x->Next;
t2 = t1->Next;
p = t1;
t1->Next = x;
x->Next = t2;

-------
Ehhh.. what's up, doc?..

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:09, 04-06-2013 | #3


Аватара для Camaro

Старожил


Сообщения: 296
Благодарности: 38

Профиль | Сайт | Отправить PM | Цитировать


ViRTaCe, mrcnn, спасибо вам, что откликнулись.
ViRTaCe, да, надо мне внимательней быть. На самом деле выглядит глупо.
mrcnn, спасибо большое за код, правда там одна строка в конце выпала - присвоение Head значения p - но это, вероятно, механическая ошибка. Теперь всё работает

-------
Чистота - залог стабильной работы компьютера
Помог совет? Жми на "Полезное сообщение"

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:47, 04-06-2013 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Перестановка элементов списка

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - перестановка слов или число размещений из списка. Комбинаторика. MaximvsIT Скриптовые языки администрирования Windows 5 20-03-2012 18:37
CMD/BAT - Перестановка полей Serg2010 Скриптовые языки администрирования Windows 2 23-04-2011 19:58
Перестановка DVD на CD lavana Хочу все знать 2 25-08-2010 18:27
Перестановка DVD привода из BenQ S41-R11 K_Dash Ноутбуки 3 15-02-2010 12:23
CSS выравнивание элементов maaxiim Вебмастеру 14 19-06-2008 21:22




 
Переход