Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






I: integer;. whileList <> Nil do






Begin {LenList} i: =0;

while List < > Nil do

Begin

i: = i+1;

List: = List^.Link;

end;

LenList: = i;

End; {LenList}

{Функция вычисления ср. арифметического элементов списка}

Function SrElem(List: PLink): TData;

Var

i: integer; SrTData;

Begin {SrElem}

Sr: =0;

i: =0;

while List < > Nil do

Begin

Sr: = Sr+ List^.Data;

List: = List^.Link;

i: =i+1;

end;

SrElem: = Sr/i;

End; {SrElem}

(Функция поиска элемента по номеру в списке}

Function FindElem(n: integer; List: PLink): PLink;

Var

I: integer;

Begin {FindElem}

for i: = 1 to n-1 do

List: = List^.Link;

FindElem: = List

End; {FindElem}

{Процедура удаления элемента по номеру в списке}

Procedure DelElem(n: integer; Var List; PLink);

Var

El: PLink;

Begin {DelElem}

El: = FindElem(n, List)^.Link;

FindElem(n-1, List)^.Link: = El;

End; {DelElem}

{Процедура вставки элемента в список на заданную позицию}

Procedure lnsElem(n: integer; Elem: TData; Var List: PLink);

Var

EINew: PLink;

Begin {InsElem}

New(EINew);

EINew^.Data: = Elem;

if n < > 1

Then

Begin

EINew^.Link: = FindElem(n-1, List)^.Link;

FindElem(n-1, List)^.Link: = EINew;

End

Else

Begin

EINew^.Link: = List;

List: = EINew;

end

End; {InsElem}

{Процедура вставки ср. арифметического элементов в список}

Procedure Chet(n: integer; Var List: PLink);

Var

S: TData;

Begin {Chet}

S: = SrElem(List);
if Odd(n)
then
begin

DelElem(n div 2+1, List);

InsElem(n div 2+1, S, List);

End

else

lnsElem(n div 2+1, S, List);

End; {Chet}

Var

Listl, List2: PLink; {указатели на списки}
jin {Lists} {Основная программа}
lnPutList('ListT, Listl); {ввод исходных данных}
lnPutList('List2', List2);
if (Listl = Nil) or (List2 = Nil)
then
begin

Writeln('Один из списков пуст');

Exit

end;

Writeln('Исходные данные: '); {эхо-печать исходных данных}

OutPutList('List1', Listl);

OutPutList('List2', List2);

lnsElem(1, MinElem(Listl), List2);

lnsElem(LenList(List1)+1, MaxElem(List2), Listl);
Chet(LenList(List1), Listl);
OutPutList('List1', Listl);
Chet(LenList(List2), List2);
OutPutList('List2', List2);
End. {Lists}

Результат работы программы:

Исходные данные:

Элементы списка List 1:

4.50 -7.00 3.15 7.89 2.00 1.00

Элементы списка List2:

-9.00 5.00 2.00 6.40 1.00 8.00-1.75

Элементы списка Listl:

4.50 7.00 -3.15 2.79 2.00 1.00 8.00

Элементы списка List2:

-7.00 -9.00 5.00 2.00 0.58 6.40 1.00 8.00 -1.75

Вопросы для самоконтроля

1. Каковы особенности объявления данных динамической структуры?

2. Как определить, является ли данный элемент первым в цепочке данных?

3. Почему объекты (переменные), создаваемые процедурой New и уничтожаемые процедурой Dispose, называют динамическими?

4. Почему динамическим переменным не дают имен?

5. Как определить, что список компонентов является пустым?

6. В чем различие между статическими и динамическими переменными?

7. Какую информацию содержит ссылочная переменная?

8. Какой процедурой создается указанная переменная?

9. Можно ли сформировать указатель, ссылающийся на статическую переменную?

10. Что выполняет операция разыменования?

11. С помощью каких процедур происходит распределение памяти под динамические переменные?

12. Какие состояния может принимать ссылочная переменная?

13. В каких случаях указатель может находиться в неопределенном состоянии?

14. В чем различие между состоянием nil и неопределенным состоянием?

15. Какие действия выполняют процедуры New и Dispose?

16. Что представляет собой очередь как структура данных?

17. Что представляет собой стек как структура данных?

18. Что требуется для создания связанных динамических структур данных?

19. В чем состоит особенность описания типов для создания динамических структур данных?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.