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

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

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

 
 Ответить  Открыть новую тему 
> Список+указатели, Вставка нового элемента в список
сообщение
Сообщение #1


Гость






Помогите составить программу, которая вставляет в список L
новый элемент F перед первым вхождением элемента Е,
если Е входит в L. Программа должна быть реализована
с применением динамических переменных (указателей).
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Поиском надо пользоваться!
Здесь все есть: FAQ: Списки


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


Гость






Если список объявлен вот так:
Type
point = ^item;
item = record
number: integer;
next: point
end;
Var my_root: point;

то процедура,
Цитата(Юличка @ 24.06.05 9:08)
которая вставляет в список L новый элемент F перед первым вхождением элемента Е, если Е входит в L.
, будет такой:
procedure do_insert(x: integer);
var q: point;
begin
search(my_root, x, q);
if q <> nil then insert_before(q, x)
end;


Все остальное, что необходимо для создания списка и его заполнения - здесь:
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






НарКот, вообще-то здесь стараются НЕ давать полностью готовых решений, тем более - того, что можно найти в FAQ-е...

И уж совсем желательно воздерживаться от реализации списков через массивы, ты теряешь все их преимущества...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Ищущий истину
******

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

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


НарКот, более того, реализовать список на массивах просто невозможно.
Это будет обычный массив.
Вот на спиках и массивах уже можно организовывать различные АТД (абстрактые типы данных по терминологии А. Ахо), такие как стек, очередь, дерево, дек и другие.
Поскольку для них важны правила доступа к элементам АТД, а не реализация самих данных...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






а какой список нужно?

я могу попробовать :yessss:

Да, в принципе, пробовать-то нечего... Читаем ВНИМАТЕЛЬНО пост №3 (и идем по ссылке, там ВСЕ реализовано уже давным-давно...), кому-то так охота создать свой велосипед?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

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

 





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