![]() |
|
Модераторы: Poseidon |
![]()
|
|
| SFY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.1.2007 Репутация: нет Всего: нет |
Приведу задание, как оно есть:
"Дек с тремя "хвостами" Если обычный дек можно представить как открытую трубку, а стек - как трубку, запаянную с одного конца, то трех-хвостовой дек - это открытая трубка в виде тройника. Так что общая логика работы с таким деком сохраняется, за исключением появления особой точки - центра дека. Начните реализацию с обычного дека." Обычный дек я сделал, но его нужно доделать до треххвостового. По идее, на пересецении "трубок" в нем появляется центральный элемент, который должен хранить указатели на предыдущие элементы, т.е. 3 указателя. И еще один нюанс: например, мы удаляем из одной "трубки" все элементы. Что делать? Очевидно, нам нужен переключатель в центральном элементе, который переключал бы дек на другие "трубки", что бы и в них можно было удалить элементы. Или наоборот - добавить. Легко в теории, но не столь просто на практике. Как именно это реализовать в коде? Даже и не знаю, с чего начать... Долго лазил по поисковикам, по n-хвостовым декам информации 0 ( Буду рад, если кто-нибудь поможет P.S. Код обычного дека (который нужно доделать) прилагаю в файле, а заодно продублирую здесь.
Это сообщение отредактировал(а) SFY - 5.1.2007, 01:14 Присоединённый файл ( Кол-во скачиваний: 6 )
deq.cpp 4,64 Kb |
|||
|
||||
| achepkunov |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.12.2006 Репутация: нет Всего: 1 |
Правильно говоришь - три трубки. Но в особой точке ничего хранить не надо, нужно ввести правило, по которому берется элемент из двух трубок, если в трубке, из которой элемент пытаемся взять своих элементов нет. Правило может быть таким: "сначала пытаемся брать из правой трубки, потом из левой".
Например:
Соединяешь все трубки левыми концами. Тогда
Не буду лишать удовольствия написать Del Только обрати внимание: DelLeft и DelRight должны возвращать информацию о том, получилось ли удалить (а не только печатать). Ну и Del заодно тоже пусть возвращает,только уже номер трубы из которой удалили, или -1 если ничего не удалили: в процессе отладки заметишь, что сообщение про отсутствие элементов может вывестись 3 раза и захочешь вывод этого сообщения перенести в main. Ну и совсем не по теме: поскольку меню твой Spisok сам не обрабатывает, то нелогично заводить функцию menu в этот класс, лучше уж пусть будет прямо в main. |
||||
|
|||||
| SFY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.1.2007 Репутация: нет Всего: нет |
Что-то все равно лыжи не едут. Не понял
Можно чуть поподробнее расписать? |
|||
|
||||
| achepkunov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.12.2006 Репутация: нет Всего: 1 |
Если еще актуально - давай попробуем. Напиши тогда, до какого места понял, пойдем дальше потихоньку.
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |