![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]()
В универе дали задачу написать Очередь на базе списка... А представляю, как писать очередь на базе массива - причём это довольно легко. А что изменится в очереди на базе списка?
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
![]()
Ничего. список это тот же массив.
Единственное что - элементы в списке не обязательно стоят рядом. Они могут быть разбросаны в памяти безструктурно. Каждый элемент списка знает где лежат его соседи. Ну а в случае с очередью просто напросто из списка будет выбираться элементы не из его конца а из его головы, таким образом, следующий после первого элемента станет главным
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]()
Т.е. можно запрогать через упорядоченный массив? Или можно через неупорядоченный массив, но его элементы будут хранить не только то, что им нужно хранить, но ещё и номер следующего за ним? Как лучше?) Спасибо
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Определяем структуру узла:
Код:
Код:
Код:
Плюс проверки на равенство нулю top и bottom когда надо. Если у узла будет деструктор Код:
Вот так вот можно сделать очередь на базе списка. P.S. Ну или можно вставлять новый узел перед top, а удалять узел bottom - как вам будет удобней.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]()
Не совсем то, что мне нужно... Нужно реализовать через шаблон. Ниже выложу, что начал писать, но там почему неправильно работает Push (переменная i создаётся не новая, а используются старая и если попробовать запушить 3 числа, то после выталкивания последнего, получим муть)
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Заменяйте тип value в узле с int на шаблонный - и будет то, что надо.
Далее, по вашему коду. Общий совет - в конструкторах лучше использовать списки инициализации. Для встроенных типов это, может быть, и безразлично, а вот для объектов классов (особенно без конструктора по умолчанию), констант и ссылок - это критично. Поэтому желательно всегда использовать подход, основанный на списке инициализации: Код:
Код:
И обычно в односвязных списках все-таки ссылаются на "следующий", а не на "предыдущий" элемент - это насчет названий prev и next.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]()
Pop я в конце писал... Там и правда надо было bottom писать - тупанул. Сейчас попробую исправить
Спасибо Добавлено: По поводу ссылки на следующий - это всё-таки дело вкуса=) Я очередь себе представляю как столбик, где сверху вставляют элементы, а снизу забирают) Поэтому и удобней prev использовать =) Добавлено: И не понял, почему у меня не работало и что такое списки инициализации) Добавлено: Всё, разобрался. Нужно у меня просто исправить TItem<T> i; на TItem<T>* i = new TItem<T>; (я раньше так и хотел, но думал, что так только массивы создаются - пробовал писать new TItem<T> i ![]() Последний раз редактировалось TwiX; 19.09.2010 в 01:20. |
![]() |
![]() |
![]() |
#8 | |
Регистрация: 10.11.2010
Сообщений: 7
|
![]() Цитата:
Если Вы представляете - поделитесь своим предствлением, пожалуйста |
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чем отличается журналист от корреспонедента? | Golovastik | Свободное общение | 3 | 24.06.2010 19:08 |
Очередь с приоритетами на базе кучи | Nastenova | Помощь студентам | 1 | 15.06.2010 16:11 |
Чем отличается IA-64 от IA-32 | Ivan_32 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 09.06.2009 16:13 |
Чем отличается кампилятор от интерпретатора | prikolist | Помощь студентам | 1 | 20.06.2008 12:16 |
Чем отличается AX от BX? | veter_s_morya | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 05.05.2008 16:50 |