Студопедия

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

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

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






Удаление всех элементов списка






При удалении списка производятся последовательное перемещение указателя начала списка на следующий элемент и удаление освободившегося элемента:

Elem: = List;

while Elem < > Nil do {пока не достигнут конец списка}

Begin

List: = List^.Link; {перемещение начала списка на следующую

позицию}

Dispose(Elem); {удаление предыдущего элемента}

Elem: = List

end;

 

Вывод на печать всех элементов списка

Содержимое списка на печать выводится посредством последовательного перемещения указателя от одного элемента к последующему и распечаткой содержимого текущего элемента:

Elem: = List; {установка текущего элемента на начало списка}
while Elem < > Nil do {пока не достигнут конец списка}
begin

Write(Elem^.Data); {вывод текущего элемента на печать} Elem: = Elem^.Link; {перемещение элемента на следующую

позицию} end;

Пример составления программы

Пусть необходимо сформировать два списка действительных элементов: Listl и List2. Минимальный элемент списка Listl поместить первым в список List2, максимальный элемент второго списка List2 поместить последним в список Listl. Если количество элементов соответствующего списка четно, вставить в середину списка значение среднего арифметического его элементов, если нечетно - удалить центральный элемент и на его место поместить значение среднего арифметического.

{Программа: Lists. }
{Цель работы: работа с динамическими списками. }
{Исходные данные: Listl, List2 - списки действительных элементов. }
{Программист: Чепрасов Д.В. }
{Дата: 25 марта 2001 г. }
Program
Lists;

TData = real; {тип элемента списка}

PLink = ^TEIement; {тип указателя списка}

TElement = record {динамический объект}

Data: TData; {поле данных}

Link: PLink; {ссылка на следующий элемент списка)

End;

{процедура ввода}
Procedure lnPutList(Name: string; Var List: PLink);
Var

EINew, ElPred: PLink;

Value: TData;

i, n: integer;

Begin {InPutList}

ClrScr; {очистка экрана}

Write('Введите колич. элементов списка', Name, ': ');

ReadLn(n);

List: = Nil;

WriteLn('Ведите элементы списка', Name, ': ');

for i: = 1 to n do

begin

Read(Value);

New(EINew);

EINew^.Data: = Value;

EINew^.Link: = Nil;

if List = nil

then

List: = EINew

else

EIPred^.Link: = EINew;

ElPred: = EINew;

end;

End; {InPutList}

{процедура вывода}

Procedure OutPutList(Name: string; List: PLink);

Var

i: integer;

Begin {OutPutList}

Writeln('Элементы списка', Name, ': ');

while List < > Nil do

begin

Write(List^.Data: 4: 2, '');

List: = List^.Link;

end;

Writeln;

End; {OutPutList}

{Функция поиска минимального элемента списка}

Function MinElem(List: PLink): TData;

Var

Min: PLink;

Begin {MinElem}

Min; = List;

while List < > Nil do

begin

if List^.Data < Min^.Data

then

Min: = List;

List: = List^.Link;

end;

MinElem: = Min^.Data;

End: (MinElem)

{Функция поиска максимального элемента списка}

Function MaxElem(List: PLink): TData;

Var

Max: PLink;

Begin {MaxElem}

Max: = List;

while List < > Nil do

Begin

if List^.Data > Max^.Data

Then

Max: = List;

List: = List^.Link;

End;

MaxElem: = Max^.Data;

End; {MaxElem}

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

Function LenList(List: PLink): integer;

Var






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