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

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

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

> Список+указатели, Вставка нового элемента в список
Юличка
сообщение 24.06.2005 9:08
Сообщение #1


Гость






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





Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 22.07.2025 10:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"