|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.11.2016, 15:15 | #1 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 30
|
Создать пользовательские классы - дек, стек (LIFO), очередь (FIFO) на базе класса list библиотеки STL.
Создать пользовательские классы - дек, стек (LIFO), очередь (FIFO) на базе класса list
библиотеки STL. Написать тестирующую программу, которая в тестовом режиме выполняет операции над сформированными сложными структурами. Перечень операций должен быть классическим для сложных структур (с учетом ограничений на обработку конкретной структуры): создание пустой сложной структуры; добавление элемента в структуру до и после текущего элементы; удаление любого элемента в структуре; поиск элемента с заданными свойствами в структуре; сортировка элементов структуры; печать элементов структуры на экран; удаление всей структуры. Помогите пожалуйста |
30.11.2016, 15:17 | #3 |
Заблокирован
Регистрация: 29.11.2016
Сообщений: 215
|
|
02.12.2016, 21:15 | #4 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 30
|
Можно пожалуйста пример очереди другое сам сделаю нужно понинять как
|
03.12.2016, 17:52 | #5 |
Заблокирован
Регистрация: 29.11.2016
Сообщений: 215
|
|
03.12.2016, 18:20 | #6 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Пример какой-то есть в книге Стивена Прата (эмуляция очереди в банкомат):
0.jpg Только мне кажется (могу ошибаться) там создаётся класс Queue "с нуля" (обрати внимание, именно с большой буквы "Q", дело в том что есть в STL класс "queue" специально предназначенный для очереди)... Обрати внимание на функции: 1.jpg Но ведь все эти (и не только эти) методы есть уже в описании класса list: 2.jpg p.s.1: немного не понятна фраза "на базе класса list библиотеки STL". Вот если бы её не было, тогда было бы понятно что делать, а так... Хотя предполагаю, что это должно как-то облегчить тебе задание. Возможно имелось ввиду что то подобное: 3.jpg Ну ты понял, да? В примере создаётся контейнер из целых чисел ("int") а тебе надо из своего, вновьсозданноего типа структура... Хотя... Если будешь действовать (развивать мысль) по последнему примеру, тогда в твоём задании будет не понятна другая фраза: "Создать пользовательские классы"... p.s.2: знаешь что - возьми и поэкспериментируй на простых примерах: http://ci-plus-plus-snachala.ru 4.jpg Не просто переписуй код, а именно осознано... |
03.12.2016, 19:32 | #7 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Обобщу. Непонятки с заданием:
1) Если бы фразы: "на базе класса list библиотеки STL" не было бы, тогда нужно было делать по книге Прата (у него, для удобства, код разбит по файлам, но можно и совместить в одном). 2) Если предыдущую фразу оставить, но убрать "Создать пользовательские классы", - тогда нужно делать как по ссылке (чёрные экраны смотри - только вместо понятного типа "int" будет твой-пользовательский тип данных) 3) А вот с обоими фразами одновременно - непонятно что требуется тебе делать... Может быть имелось ввиду какой-то механизм наследования (пользовательский класс - потомок от list, и наследует все его методы: удалить весь список, создать новый узел очереди/стека/дек, удалить отдельный узел, поиск по узлам....) Или нет, а нужно все эти методы (по заданию которые) описывать самому? 4) Непонятно словосочетание: "сложными структурами". "Структура" - это то, что описывает ключевое понятие С++ ("strurct") или под "структурой" имелось ввиду: "совокупность данных в пользовательском классе"? От этого зависит где будут храниться ссылки "из текущего экземпляра класса на следующий экземпляр" (это нужно для образования связи между экземплярами). Например: 11.jpg 12.jpg Все эти вопросы решаются простым сопоставлением с учебной программой, которую вы проходили на парах... И ещё обрати внимание "одна ссылка" (а не две) это связано с тем что в примерах список однонаправленный, а если у тебя двунаправленный, тогда нужно две ссылки предусматривать (я не помню, где-то мелькнуло или стек или очередь - представитель двунаправленного списка). Разберись когда нужно идти по списку только в одном направлении, а когда и взад и вперед (короче с теорией познакомься)... Последний раз редактировалось ura_111; 03.12.2016 в 20:14. |
03.12.2016, 20:27 | #8 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Ну вот например, однонаправленный список (обрати внимание на ссылки. Ошибся: ссылка в 3-м экземпляре - NULL):
13.jpg p.s.: забыл сказать, я не специалист в программировании (а реально только учусь), поэтому могу вводить в заблуждение, рекомендовать ложные пути (учти это)... Но ведь тебе надо с чего-то начинать... Последний раз редактировалось ura_111; 03.12.2016 в 20:30. |
03.12.2016, 23:38 | #9 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 30
|
Код:
Последний раз редактировалось drako08; 03.12.2016 в 23:42. |
04.12.2016, 08:05 | #10 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Да... Посмотрел я на код и понял - ты знаешь больше моего и это мне надо тебе вопросы задавать, а не наоборот... Я пытался немного поэкспериментировать с кодом и у меня появились вопросы:
1) Что делает этот код? (и без него программа нормально работает): 1.jpg Я пытался в программе удалить ещё что-нибудь, но мне ошибки выдавала (наверно остальные куски кода всё-таки нужны), поэтому вопрос только по тому что отметил: зачем это? 2) А вообще, это ты писал код или просто где-то слизал? 3) Давай поговорим о стеке (то что уже написано)... а) Ты спрашиваешь: как сделать двухзвязний список? А разве использование "list" уже не создаёт двухзвязний список? 2.jpg Дело в том, что в STL есть ещё (кроме "list") и "stack" (для организации стека), и "queue" (для организации очереди) и, наверное, ещё что-то есть... Поэтому у меня возник вопрос: "Может в задании ошибка, может для стека нужно один тип использовать, а для очереди другой?". б) Покажи мне на примере, как у тебя организована связь в стеке... Или простой, последовательный вывод (использование "st.top()") - это оно и есть?. в) А что, программа только один раз выводит список и сразу его удаляет; а если нужно продемонстрировать свойство стека: удалить один (два) элемента и вывести то что получилось (что бы посмотреть из чего было удалено: из конца списка или из начала, а может из середины)... p.s.: пиши чё думаешь. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
«Очередь. Стек. Дек» (TurboPascal) | Aunura11 | Помощь студентам | 5 | 10.06.2014 18:32 |
С++. Создать базовый класс список. Реализовать на базе списка стек и очередь... Объяснить программу (написать комментарии) | the_faceless | Помощь студентам | 0 | 17.02.2014 01:54 |
C++, из LIFO в FIFO | Виталюкас | Помощь студентам | 2 | 01.06.2012 10:34 |
Очередь, стек, дек в Delphi | Katen'ka | Помощь студентам | 1 | 12.06.2009 22:23 |