шаблон класса очередь на С++, может у кого есть? |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
шаблон класса очередь на С++, может у кого есть? |
lays |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Нужен очень шаблон класса "очередь" на С++, с простыми операциями, такими как вставить новый элемент в очередь, взять вершину очереди, проверка на пустоту очереди, размер очереди, вывод элементов и т.п. Может у кого есть что-нить подобное?
|
мисс_граффити |
Сообщение
#2
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
в FAQ есть это все на паскале.
Ну и поиском пользуйся... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
Сообщение
#3
|
Гость |
Здесь выкладывался шаблонный class TQueue: моделирование работы банка
(реализация - в присоединенном файле, на расширение не смотри, это именно C++, просто тогда еще нельзя было присоединять СРР файлы) |
w@rlock |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
С шаблонами и классами работаю первый раз. Попытался написать очередь через массив.
Не понимаю, почему функции showHead () и showTail () работают не так… И вообще, если кто может проверьте правильность реализации… Компилятор Dev-C++.
-------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
volvo |
Сообщение
#5
|
Гость |
Цитата Не понимаю, почему функции showHead () и showTail () работают не так… Измени showHead вот так, и посмотри, ЧТО ты пытаешься выводить:template <class T>(допустимые индексы - от 0 до 9, чтобы было понятно, о чем я) |
w@rlock |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
volvo
Да и правда… Но теперь вообще запутался…Как написать тогда функции просмотра головы и хвоста, подсказать можешь? И если я вынимаю один элемент их очереди, то место освобождается, а всунуть я получается ничего уже не могу туда -------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
Алена |
Сообщение
#7
|
Гость |
Значит, так...
Проблема - в том, что такой способ не очень подходит для реализации очереди, это вообще-то для реализации Стека было придумано - с очередью надо будет поизвращаться... Я вот тут кое-что набросала - в MinGW вроде работает: Что еще хотелось бы отметить: половину из этих методов можно внести прямо в определение класса, кроме этого - // посмотреть первый элементМетод ничего не возвращает - я сделала его void-ом... Прикрепленные файлы test.cpp ( 2.49 килобайт ) Кол-во скачиваний: 315 |
w@rlock |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
Большое спасибо
Вот эту функцию можно пояснить еще:
Что такое: T value = q[begin]; ? И что делается в цикле и почему i++ и end -= 1? -------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
lays |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Алена, volvo, w@rlock
здорово правда функцию pop тоже не до конца понял... комментарии мона? |
volvo |
Сообщение
#10
|
Гость |
Цитата(w@rlock @ 8.01.2007 18:28) Что такое: T value = q[begin];? Цитата(w@rlock @ 8.01.2007 18:28) И что делается в цикле и почему i++ и end -= 1? В цикле происходит последовательный сдвиг всех элементов до "хвостового" включительно на 1 позицию влево - т.е., ближе к "голове", ибо произошло выталкивание одного элемента из очереди, остальные должны занять его место... Обойму пистолетную в руках держал? Когда вытаскиваешь верхний патрон, все остальные сдвигаются, правда? Здесь то же самое (несмотря на то, что что к обойме более применимо понятие стека)... А end -= 1 это уменьшаем номер "хвостового" элемента на 1, один элемент из очереди ушел... |
lays |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
volvo
спасибо. но почему ++i, а не i++ ? вроде бы менял, изменений не заметил... |
volvo |
Сообщение
#12
|
Гость |
Цитата но почему ++i, а не i++ А для отдельно стоящего оператора это не играет роли... Обе версии выполняют одинаковые действия (увеличение значения переменной на 1)... |
lays |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
да. но ведь в данном примере в цикле pop при ++i значение i[1] присвоется i[2]. а при i++ i[0] присвоется i[1] ?
|
volvo |
Сообщение
#14
|
Гость |
for(int i = 0; i < end; ++i) q[i] = q[i + 1];аналогично int i = 0; какая разница, будет последним оператором ++i или i++, объясни мне!!! Он же здесь НЕ в выражении, а отдельный оператор! А НЕ в выражении разницы между префиксным/постфиксным инкрементом НЕТ. |
w@rlock |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
а вот если ещё конструктор копирования написать свой? как это сделать?
-------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
w@rlock |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
Писал-писал этот шаблон, а так и не сдал
Сказали сменить реализацию Аргументы примерно такие, что неприлично делать очередь с линейным временем доступа... Кто что может подсказать? Как написать правильно? Очень срочно нужно... -------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
volvo |
Сообщение
#17
|
Гость |
Ссылка на то, как правильно - в третьем сообщении темы... Однако, тебе это не понравилось, ты стал делать по-своему... Тогда извини, но я не понимаю, что ты хочешь... Делай по-своему дальше...
|
w@rlock |
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Максим Репутация: 0 |
он у меня не компилится просто... тем более как просто от туда очередь то выдрать?
-------------------- Я не боюсь казаться смешным. Хмм..это не каждый может себе позволить...
Чтобы избежать критики, ничего не делайте, ничего не говорите, будьте никем... |
lays |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Я тут тоже очередь пытаюсь всё сделать (некоторые вещи уже из выше написаного взял) У volvo не беру по причине, что ещё не такого уровня, многие вещи не понимаю, поэтому пытаюсь свою.
Внизу то, что пока получилось...Только говорят, что у меня некорректная работа с памятью...смотрите мол конструктор и деструктор и думайте... Что не так и как исправить?
Сообщение отредактировано: lays - |
volvo |
Сообщение
#20
|
Гость |
Цитата он у меня не компилится просто... Не знаю, что там может НЕ компилиться... Вот выдранная из той программы очередь:(проверено под Turbo C++) Q01.CPP ( 1.67 килобайт ) Кол-во скачиваний: 609 (проверено под GCC/MinGW) test.cpp ( 1.44 килобайт ) Кол-во скачиваний: 574 Других компиляторов не держу... lays, у тебя будет то же самое, что и в предыдущем варианте - опять не понравится преподавателю... Ну не делается так очередь, это же ДСД - Динамическая Структура Данных, нельзя ее ограничивать сразу же массивом... |
Текстовая версия | 19.03.2024 16:44 |