Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data_Structure / лекц05.ppt
Скачиваний:
52
Добавлен:
03.03.2016
Размер:
212.99 Кб
Скачать

Пример: удаление из списка последнего элемента.

Описание структур данных.

Type

U=^zap;{указатель на элемент списка}

zap=record

{элемент списка}

inf: integer;

ukz: list

end;

Var psp: ukz;{указатель на начало списка}

22

Формальный параметр процедуры- указатель на первый элемент обрабатываемого списка

23

В общем случае должен быть рассмотрен список, содержащий более одного элемента, например:

Psp

P Q

Здесь Psp-указатель на начало списка, Q- указатель на последний, удаляемый элемент, Р- указатель элемента, стоящего перед удаляемым

Признак последнего элемента: Q^.ukz=nil Удаление элемента: P^.ukz:=nil; dispose(Q);

24

Частный случай: список состоит из одного элемента.

Признак данного случая: Psp^.ukz=nil

Удаление в частном случае:

Psp

 

Q:=Psp;

Psp:=nil;

Dispose(Q);

Q

Если список пуст, процедура прекращает

25

работу

 

Процедура, решающая указанную задачу:

Procedure del_last(var Psp:u);

Var p,q:u;

Begin {Procedure del_last}

if Psp=nil then Exit;{список пуст} if Psp^.ukz=nil then

{частный случай}

 

Begin

 

Q:=Psp;

 

Psp:=nil;

 

Dispose(Q);

 

End;

26

{общий случай}

P:=Psp; Q:=Psp^.ukz;

While Q^.ukz<>nil do

Begin

P:=Q;

Q:=Q^.ukz;

End;

P^.ukz:=nil;

Dispose(Q);

End;

{Procedure del_last}

27

 

 

Пример: включение в список заданного элемента перед предпоследним элементом

Описание структур данных - как в предыдущем примере

28

Формальные параметры процедуры:

Lst – указатель на начало списка, в который включается элемент,

Element – указатель на включаемый элемент (предполагается, что элемент сформирован до вызова процедуры, то есть для него выделена память, заполнено информационное поле, а в поле указателя записано значение nil)

29

В общем случае должен быть рассмотрен список,

содержащий более двух элементов, например:

Lst

P Q

Здесь Lst-указатель на начало списка,

Q-указатель на предпоследний элемент, перед которым выполняется включение,

Р-указатель элемента, стоящего перед предпоследним

Признак предпоследнего элемента:

Q^.ukz^.ukz=nil

30

Включение элемента:

Elem^.ukz:=Q;

P^.ukz:=Elem;

Lst

P

Q

Elem

31

Соседние файлы в папке Data_Structure