простая задача на очереди, я решал но она не работает |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
простая задача на очереди, я решал но она не работает |
AlexSt |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
Даны две непустые очереди; адреса начала и конца первой равны Р1 и Р2, а второй Р3 и Р4. Очереди содержат одинаковое количество элементов. Объединить очереди в одну, в которой элементы исходных очередей чередуются(начиная с первого элемента первой очереди). Вывести указатели Р5 и Р6 на начало и конец полученной очереди. Операции выделения и освобождения памяти не использовать.
|
Lapp |
Сообщение
#2
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Покажи, что у тебя получилось. Поправим.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
-Alex- |
Сообщение
#3
|
|||
Гость |
А! вот так:
program ochered_n15;
|
|||
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ну что ж, давай разбираться..
Что должна делать процедура V? Вставлять новый элемент в очередь? Я попробую показать, что она делает procedure v(b,e:och;i:char); Ты заводишь локальную переменную х - ссылку, и начинаешь работать с ней, даже не взяв под нее память. Это делать недопустимо - это раз. Два - то, что сама переменная х тебе не нужна. Если тебе передается в процедуру конец списка (списки ты называешь очередями), то с ним и работай. Еще одна ошибка: для того, чтоб вывести параметры из процедуры, их надо описывать как var... С процедурой Iz я вообще ничего не понял. Короче, вот рабочий код - попробуй в нем разобраться. Я пытался писать как можно ближе к твоей программе. Если что неясно - спрашивай.. program ochered_n15; -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Ilius |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: 0 |
Смотрите у меня почти такая же задача только элементы каждой из очередей упорядочены по возрастанию (в направлении от начала очереди к концу), Объеденить очереди в одну с сохранением упорядочености элементов а в остальном такое же. Как мне зделать эту упорядоченность?
|
Lapp |
Сообщение
#6
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Смотрите у меня почти такая же задача только элементы каждой из очередей упорядочены по возрастанию (в направлении от начала очереди к концу), Объеденить очереди в одну с сохранением упорядочености элементов а в остальном такое же. Как мне зделать эту упорядоченность? Идешь по первому списку, сравнивая его элементы с первым элементом второго. Как только получил инверсию - переключаешь указатели (хвост первого делаешь вторым, а второй ставишь на место хвоста первого). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
AlexSt |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
ОГРОМНОЕ спасибо! только я не понял что выполняют пеерменные q1, q2, t1 & t2. Ещё нужно избавиться от '?' в конце первой очереди(соответственно элементов во второй на 1 меньше)
|
Ilius |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: 0 |
Что то я не понимаю что и куда мне надо вставить чтобы элементы каждой из очередей были упорядочены по возрастанию и объеденить очереди в одну с сохранением упорядочености.
|
Lapp |
Сообщение
#9
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
AlexSt, а также Ilius, в программировании списов очень хорошо помогают картинки.
Список (очередь, как хотите называйте) изображаем как последовательность прямоугольников, можно каждый поделить на две части: данные и указатель. Из части "указатель" торчит стрелка, которая указывает на следующий элемент этого списка. Нарисовать такую штуку на бумажке очень полезно для понимания. Вот, например, я делал такой рисунок в теме Циклический сдвиг . Начальное состояние стрелок рисуешь одним цветом, а конечное - другим. После такого наглядного представления все становится проще. Попробуйте. Если все равно будет неясно - приходите.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 19.05.2024 20:43 |