![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Izmort |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
предположим, что уже построен и задан указателем P однонаправленный список элементами которого являются целые числа. Написать программу, которая из списка P удаляет все вхождения элемента E.
Подскажите, пожалуйста, как создать список в котором будут оба вида указателей - как E так и P? Ниже я привел мои "старания", процедура построения списка и выведения на экран.
Это конечно же не работает... Но я уже не знаю что еще можно сделать... помогите пожалуйста, у меня уже нет сил издеваться над этой задачей... |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Подскажите, пожалуйста, как создать список в котором будут оба вида указателей - как E так и P? Что ты понимаешь под "видом Е"? ![]() А как еще это можно понимать? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Izmort |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
Я не знаю... Лично я думал, что есть список, он строиться указателем с именем P, потом в него допустим позапихивали из другого списка, где указатель завется E, тоже какие-то элементы.. и мне надо их удалить... я думаю так, но если мне кто-нить растолкует что я не прав, то соглашусь с иным мнением...
Добавлено через 2 мин. И тогда вопрос в другом - мне нужно искать элементы, которые содержат инфу, например тот же 25 и удалять их? |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
И тогда вопрос в другом - мне нужно искать элементы, которые содержат инфу, например тот же 25 и удалять их? Ну да, наверное. Ну, перечитай еще раз условие:удаляет все вхождения элемента E Видишь? Речь идет не про "список Е", а про "элемент Е". Или я уже не понимаю Russian.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Izmort |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
Скорее я его не понимаю...)) Спс за разъяснение) Тогда, по-моему алгоритм сводиться поочередному анализу элементов в списке Р и если очередной элемент равен Е, то его нужно удалить, если я не ошибаюсь.
Вопрос в другом как написать процедуру поочередного анализа элементов? имхо получатся так:
только ошибка вылезает в этой строчке else P_temp := p_temp^.next; Сообщение отредактировано: Izmort - 2.06.2009 14:48 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата только ошибка вылезает в этой строчке else P_temp := p_temp^.next; У тебя программа вообще некомпилируемая, до ошибки еще как до луны... Смотри внимательно, в процедуре DelE, где у тебя ветка else, и к чему она относится... Ты Begin/End не забыл часом?А вообще, по-моему, тема давно просится в "Задачи", алгоритмами тут уже и не пахнет, пошла чистая реализация... |
Izmort |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
Задачи, пусть задачи...
тока теперь она виснет, где ошибка? Подскажите плз |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Бррр... Во-первых, ты как-то не очень красиво заполняешь список, можно сделать это проще... А во вторых:
while P_temp <> nil do;в процедуре DelE... Вот эта точка с запятой - лишняя явно, цикл получается пустой, и условие никогда не выполняется. Вот и зацикливается... Это - навскидку, проверить сейчас негде... |
Izmort |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
Спс, теперь не зацикливается. Но все равно работает не правильно, теперь совершенно непонятным для меня образом... могу скинуть один из результатов
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Смотри... Формируем список так:
procedure Form;, удаляем элемент E - вот так: procedure DelE;Это - почти все, что нужно... После этого надо проверить первый элемент на равенство E, и если равен - то удалить его... Доделай это сам (очень трудно теоретически что-то советовать, не имея под рукой компилятора). По-моему, нигде не ошибся, проверяй... |
Izmort |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Валентин Репутация: ![]() ![]() ![]() |
Большое спасибо за помощь!
Вот конечный вариант программы
Глядишь кому-нибудь пригодиться |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:32 |