|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.10.2013, 23:40 | #1 |
Новичок
Джуниор
Регистрация: 17.10.2013
Сообщений: 1
|
Указатели с++ двусвязный список
Здравствуйте уважаемые форумчанины!
Мое задание: Разработать класс, содержащий численные элементы. Составить двусвязный список из объектов этого класса и отсортировать его по любому полю. Я нашла вот такую программу http://ci-plus-plus-snachala.ru/?p=60 Я понимаю эта программа создает только двусвязный список, а надо еще сделать сортировкy...Правильно ли я понимаю? И что значит отсортировать по любому полю, ведь все что мы можем отсортировать в этой программе это наши значения.... p.s. Это первая программа на с++, поэтомy вот такие проблемы... |
18.10.2013, 12:44 | #2 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Сортировка хауноу.
Код:
Помог? Оставляем отзыв =)
|
18.10.2013, 14:27 | #3 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
Анная что у Вас у самой получилось сделать...??? Выкладывайте посмотрим.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
19.10.2013, 11:16 | #4 | |
Новичок
Джуниор
Регистрация: 20.04.2012
Сообщений: 1
|
Цитата:
http://ru.wikipedia.org/wiki/%CF%EE%...EB%E0%F1%F1%E0 Если брать тот пример, то делаете внутри структуры несколько переменных, например 3 struct Node //Структура являющаяся звеном списка { int age; //Возраст bool sem_pol; //Состоит в браке или нет string name; //ФИО Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка }; Теперь каждая из 3 переменных есть поле, по которому можно выполнять сортировку. Если вам достаточно одного поля, то выбираете age и делаете сортировку. (Просто можно сделать меню Сортировать по, но тогда, возможно, придется сделать различные сортировки (одна для строк, вторая для чисел и т.п.)) Сортировку можно выполнять разными способами. Например меняя сами указатели местами (те, что Next,Prev, Head,Tail) Такая сортировка возможна, но скорее всего вам можно проще. Если вам можно проще, то достаточно выполнять проход по списку, вытаскивать из списка значение (по которому сортируете), но переставлять надо не 1 значение, а все значения структуры. Т.е. вы нашли одно значение (одно поле), которое надо переставить, а меняете местами не только его, но и все значения, которые относятся к этому полю. Условно это выглядит так //Первый элемент списка int age = 18; //Возраст 18 bool sem_pol = true; //Состоит в браке string name = Герасимво Сергей Николаевич; //Герасимво Сергей Николаевич Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка //Второй элемент списка int age = 23; //Возраст 23 bool sem_pol = false; //НЕ состоит в браке string name; //Бышовец Анна Григоръевна Node *Next,*Prev; //Указатели на адреса следующего и предыдущего Далее вы выполняет сортировку по убыванию по возрасту. Во время сортировки вам достаточно вытаскивать только age, сравнивать его со следующим age 18<23? Да, значит надо поменять местами поля. Только менять местами надо не одно поле, а все поля, которые относятся к найденному age. 18 c 23 true с false Герасимво Сергей Николаевич с Бышовец Анна Григоръевна ////////////////// Таким образом и получается, что выбирая только одно поле, вы сортируете именно весь список по полю. Если условно считать, что ключевое поле есть Name и выполнить сортировку только по значению age, то получится только переназначить возраст каждому человеку. =================== И я знаю, что объяснил не идеально, но надеюсь достаточно, чтобы понятно было. Последний раз редактировалось daslex; 19.10.2013 в 11:37. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двусвязный список(C++) | fable0097 | Помощь студентам | 0 | 16.05.2011 16:03 |
Двусвязный список | decantnik | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 09.05.2011 00:58 |
Двусвязный список | Work Group | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 13.07.2010 01:44 |
двусвязный список | klykovka | Помощь студентам | 8 | 22.05.2010 18:58 |
двусвязный список на си++ | mizantrop32 | Общие вопросы C/C++ | 0 | 18.05.2010 17:45 |