![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Jabbson |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Арсений Репутация: ![]() ![]() ![]() |
Добрый день.
Задание следующее: Разработать структуру данных для построения предметного указателя. Осуществить поиск, сортировку, редактирование. Итак, предметный указатель, как я понимаю, - это то, что мы, зачастую, имеем в концах книг и имеет структуру: {СЛОВО} {СТРАНИЦЫ, ГДЕ ЭТО СЛОВО ВСТЕРЧАЕТСЯ} Реализацию я вижу такую: (я знаю, это задание уже можно найти почти готовым, но я хочу написать принципиально свое, потому как очень интересно разобраться в принципах динамических структур данных). Есть объявления типа: type Что я делаю дальше. Заполняю массив за записей с буквами собственно теми самыми буквами: for x:=65 to 90 do После этого он представляет собой следующее: letters: (('A', nil), ('B', nil), ('C', nil)...('Z', nil). После этого я перехожу к непосредственно заполнению и вот тут у меня возникает проблема. Выглядит начало примерно так: clrscr; Подскажите как примерно должна выглядеть процедура Add, чтобы: ( как я это вижу, может все гораздо проще ) * Найти по let_num в массиве lett_mas ячейку с буквой, на которую начинается слово. * Если ячейка^.first = nil, то создать новую ссылку на запись, положить туда значение z и сделать чтобы ячейка^.first теперь сслылалась на это место. * Если же ячейка^.first <> nil, то идти по этому списку до тех пор пока не дойдем до конца и вставить наше z там. Конечное видение примерно как на приложенной картинке. Заранее спасибо. Эскизы прикрепленных изображений ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Вот:
Цитата if tmp^.slovo<rab^.slovo then begin Это как раз та причина, по которой я и говорил, что надо отделить данные от дополнительной информации (которой является указатель next)... А насколько все было бы проще, если б ты сделал так: LINKREC = ^REC; ? Тогда сортировка выглядела бы так: var R: TData; Ну, а более подробно, если хочешь, напишу завтра. Чтобы проверять, надо иметь компилятор под рукой, у меня сейчас его нету... |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 23:03 |