program Lab_4;
const max=5;
type Evt= integer;
var
elem:array [1..max] of Evt;
spos, rpos:integer;
end.
Задача на стеки и очереди. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на стеки и очереди. |
Анисия |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Анисия Репутация: 0 |
Добрый день. Помогите разобраться с очередями и стеками. Как организовать очередь из n целых чисел. Пока взяла 5 чисел, это получается что надо сформировать массив. Посмотрите пожалуйста правильно сделала?
|
volvo |
Сообщение
#2
|
Гость |
Цитата Изменить ссылки так, чтобы последний элемент очереди стал первым, первый – вторым, вто-рой – третьим и т.д. Мне всегда нравятся вот такие задания... Просто великолепно. А ничего, что для этого не надо менять никакие ссылки? Это задание вообще не надо делать. Это не очередь уже, вот в чем дело... Ты в очереди когда-нибудь стояла? Знаешь, что это? Это FIFO - "первым пришел, первым вышел". А ты что предлагаешь? Пришел кто-то последним, тут его раз, перекинуть в самое начало, а всех отодвинуть? Какая-то коррумпированная очередь у тебя. Не пойдет... Не предназначена для этого очередь. Чтоб первый стал последним - легко, для этого достаточно изъять элемент из очереди, и добавить его снова, он добавится в конец... С деком твоя операция тоже делается легко, поскольку там очередь - двухсторонняя, там можно брать элемент с любой стороны, и добавлять его тоже в любую сторону, хоть в "голову", хоть в "хвост", он предназначен для таких операций, рассчитан на них. А очередь, увы, нет...Поймите уже раз и навсегда: нельзя вообще лезть на уровень указателей, когда работаешь с очередью. Равно, как и с любой другой структурой данных. Твое дело при работе с очередями - запрограммировать 2 операции: Get (которая берет элемент из начала очереди), и Put (которая добавляет элемент в ее конец). Всё, ничего больше... Точно так же, как при работе со стеком никому в голову не придет менять указатели, все что надо - это Push/Pop, иначе это уже не стек, а простой список... |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
А ты что предлагаешь? Пришел кто-то последним, тут его раз, перекинуть в самое начало, а всех отодвинуть? ага, а так всегда и делалось у нас! Так просто не отучишь..Справедливости ради, замечу, что в принципе эту операцию можно осуществить, если в реализации очереди предусмотрена функция Length (Длина). Тогда просто нужно повторить перекладывание из начала в хвост Length-1 раз. Мне кажется, нет смысла все это вещать пользователю Анисия. Человек, ни разу не сказавший тривиальное "спасибо" ни одному из отвечавших, практически не отвечающий на вопросы собеседников, вряд ли заслуживает каких бы то ни было советов или объяснений.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 28.09.2024 4:21 |