Список+указатели, Вставка нового элемента в список |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Список+указатели, Вставка нового элемента в список |
Юличка |
Сообщение
#1
|
Гость |
Помогите составить программу, которая вставляет в список L
новый элемент F перед первым вхождением элемента Е, если Е входит в L. Программа должна быть реализована с применением динамических переменных (указателей). |
hiv |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
Поиском надо пользоваться!
Здесь все есть: FAQ: Списки -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
volvo |
Сообщение
#3
|
Гость |
Если список объявлен вот так:
Type то процедура, Цитата(Юличка @ 24.06.05 9:08) которая вставляет в список L новый элемент F перед первым вхождением элемента Е, если Е входит в L. , будет такой:procedure do_insert(x: integer); Все остальное, что необходимо для создания списка и его заполнения - здесь: FAQ: Динамические структуры данных - Списки |
НарКот |
Сообщение
#4
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
Юлечка. Посмотри-ка
Количество элементов можешь изменить по своему усмотрению (const N=14)!!! Исходный код Uses Crt; Type Spis=^L; L=record El: Word; Next: Spis end; Var A:array[1..15] of Spis; k,j,i,E,F:integer; q:char; const N=14; {===== =====} { данная функция ищет вхождение элемента Е в список, и при его наличии в нем вставляет впереди него элемент F } function Search(simb:integer):Spis; var i,j,k:integer; Begin k:=1; For i:=1 To N Do If A[i]^.El=E Then {проверка принадлежности элемента Е массиву данных } Begin For j:=N+1 DownTo i Do A[j]^.El:=A[j-k]^.El; {сдвиг элементов массива начиная с элемента Е} A[i]^.El:=F; {вправо на одну ячейку и запись} Inc(k); {на место элемента Е элемента F} Break; End; End; repeat ClrScr; TextColor(red); Randomize; WriteLn('Превоначальный список'); For i:=1 To N Do New(A[i]); {Резервируем фрагменты кучи} A[N+1]^.El:=0; {последнему элементу для удобства присваиваем 0} For i:=1 To N Do Begin A[i]^.El:=Random(15); WriteLn('*',A[i]^.El) End; A[N+1]^.Next:=Nil; {Стираем последний указатель } {===== =====} TextColor(blue); Write(' Введите элемент списка Е= '); ReadLn(E); Write('Введите вставляемый в список элемент F= '); ReadLn(F); {===== =====} Search(E); TextColor(yellow); WriteLn('Модифицированный список имеет вид: '); For i:=1 To (N+1) Do WriteLn('*',A[i]^.El); WriteLn('Повторить ЕЩЕ?(Y/N)'); q:=ReadKey; until not (q in ['Y','y']); End. |
volvo |
Сообщение
#5
|
Гость |
НарКот, вообще-то здесь стараются НЕ давать полностью готовых решений, тем более - того, что можно найти в FAQ-е...
И уж совсем желательно воздерживаться от реализации списков через массивы, ты теряешь все их преимущества... |
Altair |
Сообщение
#6
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
НарКот, более того, реализовать список на массивах просто невозможно.
Это будет обычный массив. Вот на спиках и массивах уже можно организовывать различные АТД (абстрактые типы данных по терминологии А. Ахо), такие как стек, очередь, дерево, дек и другие. Поскольку для них важны правила доступа к элементам АТД, а не реализация самих данных... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Катюша |
Сообщение
#7
|
Гость |
а какой список нужно?
я могу попробовать :yessss: Да, в принципе, пробовать-то нечего... Читаем ВНИМАТЕЛЬНО пост №3 (и идем по ссылке, там ВСЕ реализовано уже давным-давно...), кому-то так охота создать свой велосипед? Сообщение отредактировано: volvo - |
Текстовая версия | 11.01.2025 5:15 |