IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Нужна помощь с очередями, Реализация очереди на базе массива и динам.структур
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Товарищи, очень нужна ваша помощь!

Необходимо реализовать очередь 2мя способами: на базе массива и на базе динамических структур данных (да-да, массив не труЪ, однако что поделать, такое задание выдали=( ). В каждом случае необходимо реализовать следующие операции:

1. Включить элемент в очередь
2. Исключить элемент из очереди
3. Найти в очереди элемент с заданным значением
4. Соединить 2 очереди в одну
5. Отсортировать очередь

Сказать по правде я в линейных списках нихрена не понимаю, поэтому если кто возьмется помочь, пожалуйста, комментарии в коде оставьте, если не трудно

ЗЫ: в теме "Все о динамических структурах данных" был, модуль качал.

Заранее спасибо всем, кто откликнется!


--------------------
Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта,
Когда выпадет жребий,
И первый из нас уйдет по тоннелю
Good bye
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Черный Менестрель @ 25.10.2009 17:31) *
(да-да, массив не труЪ,
Я долго старался понять, но так и не врубился - что тут зашифровано?.. blink.gif "не трудно"?

Если честно, мне совсем не нравится задание. Отсортировать очередь?.. на фига?? Это классно: отстоял полчаса, подходишь к прилавку, бдруг - бац! приходит кто-то умный и сортирует всех по росту - и я снова в конце? "Зачем?" - спрашиваю. "Because I can!" - отвечает..

То же самое по поводу многих остальных пунктов (типа поиска). В реализации очереди должны быть ДВЕ операции: положить и вынуть. Все. Ну, дополнительно можно приделать запрос длины и еще что-то сервисное. Но для обработки информации (коей является сортировка и выборка) очередь НЕ ДОЛЖНА использоваться. Ботинок не следует использовать как миску для супа, хотя принципиально это и возможно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 26.10.2009 5:23) *

Я долго старался понять, но так и не врубился - что тут зашифровано?.. blink.gif "не трудно"?


Ну что за очередь в массиве? Для добавления/удаления элемента надо или постоянно держать массив максимальной длины в памяти (уже плохо), либо создавать новый, туда все переписывать, удалять старый. Ерунда какая-то

Цитата
сли честно, мне совсем не нравится задание. Отсортировать очередь?.. на фига?? Это классно: отстоял полчаса, подходишь к прилавку, бдруг - бац! приходит кто-то умный и сортирует всех по росту - и я снова в конце? "Зачем?" - спрашиваю. "Because I can!" - отвечает..


А насчет задания - вот такая вот бредовая лаба у нас. Причем без какой-либо дополнительной инфы. Листок в зубы и делайте как хотите =(


--------------------
Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта,
Когда выпадет жребий,
И первый из нас уйдет по тоннелю
Good bye
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Листок в зубы и делайте как хотите =(
Ну, так делай... Ты ж говорил, что
Цитата
в теме "Все о динамических структурах данных" был, модуль качал.
? Неужели не заметил там же мой пост о сортировке очереди, реализованной динамическим списком? Так одна часть задания у тебя уже должна быть готова полностью: та, что с дин. списком. А там уже (по аналогии) и с массивами доделать - раз плюнуть. Ты хоть начни что-то делать, покажи, что пытаешься, а то смахивает на "сделайте мне задание, а я пойду, сдам и еще семестр делать ничего не буду"...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Черный Менестрель @ 26.10.2009 9:22) *

Ну что за очередь в массиве? Для добавления/удаления элемента надо или постоянно держать массив максимальной длины в памяти (уже плохо), либо создавать новый, туда все переписывать, удалять старый. Ерунда какая-то
Не скажи.
Стандартный метод организации очереди - кольцевой буфер.
Имеет целый ряд достоинств: бысто, не нужно каждый раз дергать менеджер памяти, прозрачно, просто...
Есть одно принципиальное ограничение - фиксированная иаксимальная длина. Но это именно ограничение, а не недостаток, т.к. в большинстве практических случаев такое ораничение нужно вводить искусственно, если его нет. Например, в DOS длина очереди в буфере клавиатуры равнялась 16 введенным символам. И этого вполне хватало. Более того, это было полезно: исчерпание буфера могло происходить только в случае, если прикладная программа вовремя не опустошала буфер, а это обычно происходило лишь в случае каких-либо проблем. В этом случае вполне естественным было как можно раньше информировать пользователя об имеющихся проблемах, а не давать ему возможности вводить килобайты текста, если все равно этот текст в дальнейшем будет потерян.

Кстати, на баже массивов вполне успешно и рационально формируются даже такие принципиально динамические структуры как списки.
Так что массив - вещь универсальная.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Цитата
Ты хоть начни что-то делать, покажи, что пытаешься, а то смахивает на "сделайте мне задание, а я пойду, сдам и еще семестр делать ничего не буду"...

Так я начал =) Перерыл кучу инфы, нашел еще модуль для очереди, в приложении он, однако сортировки там нет.

Цитата
Неужели не заметил там же мой пост о сортировке очереди, реализованной динамическим списком?

Вот за это прошу прощения, действительно просмотрел, сегодня утром когда пересматривал сохраненную информацию обнаружил этот пост.

С массивами я поковыряюсь, благо в них более-менее понимаю, однако с динамическими еще остались загвоздки. Вообще, если честно, я ни черта не понимаю в этих указателях и тд, потому хотелось бы спросить, во-первых по сортировке. В целом я понимаю, что происходит, но некоторые действия мне неясны, в частности
Код
empty := not assigned(head)
   . . . . .. . . . .
while assigned(p) do


Для чего в этих строках служит assigned?


Вернусь к найденному мной модулю (в приложении), очередь там, как и в вашем примере сортировки, как объект рассматривается. Правда я не понимаю смысла некоторых операций, в частности
function Begining : E;
function IsNotEmpty : boolean; (для чего ее добавили, если рядом function IsEmpty : boolean; ?)

function OutBegining : E;
Procedure DelBegining;
Эти функция и процедура судя по результатам одно и то же выполняют, или я не прав.


ЗЫ: а про объединение очередей вообще никакой информации найти не удалось ((





Прикрепленные файлы
Прикрепленный файл  QueeLINT.rar ( 1.95 килобайт ) Кол-во скачиваний: 193


--------------------
Когда сойдешь с ума в последний раз в апреле,
И когда выпадет карта,
Когда выпадет жребий,
И первый из нас уйдет по тоннелю
Good bye
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Черный Менестрель @ 26.10.2009 18:11) *
некоторые действия мне неясны, в частности
 empty := not assigned(head)
. . . . .. . . . .
while assigned(p) do
Для чего в этих строках служит assigned?
Проверка, была ли выделена память под переменные head и p соответственно.

Цитата(Черный Менестрель @ 26.10.2009 18:11) *
function Begining : E;
function IsNotEmpty : boolean; (для чего ее добавили, если рядом function IsEmpty : boolean; ?)
Либо автор не знаком с операцией NOT, либо крепко ее невзлюбил..

Цитата(Черный Менестрель @ 26.10.2009 18:11) *
function OutBegining : E;
Procedure DelBegining;
Эти функция и процедура судя по результатам одно и то же выполняют, или я не прав.
Подобное в некоторых случаях оправдано. Особенно, если нельзя вызвать функцию как процедуру (без присваивания). Но в целом, согласен, лишнее. Вообще, я бы не стал рекомендовать этот найденный тобой модуль в качестве примера для подражания..

Цитата(Черный Менестрель @ 26.10.2009 18:11) *
ЗЫ: а про объединение очередей вообще никакой информации найти не удалось ((
А голова на что? Ты правда надеешься всегда все "находить"?..

Пожалуйста, используй тэг code=pas для паскалевских программ


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.01.2025 10:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name