- •Процедуры работы со стеком
- •Занесение элемента в стек
- •Выборка и удаление из стека
- •Процедуры работы с очередью
- •Занесение элемента в очередь
- •Выборка и удаление элемента из очереди
- •Примеры реализации операций обработки списков
- •1) Удаление из списка k-го по счету элемента
- •Особые случаи:
- •Процедура удаления
- •Begin
- •2) Включение в список элемента перед k-м по счету
- •Особые случаи:
- •Процедура включения
- •Begin
- •3) Обмен первого и предпоследнего элементов списка
- •procedure change_node(var PSP:u);
Процедуры работы со стеком
1
Занесение элемента в стек
Procedure ZSTEK (Var PST, VKL: U);
{PST - Указатель на вершину стека,
VKL - указатель на включаемый элемент}
Begin
VKL^.Ukz:=PST;
PST:=VKL
End;
2
Выборка и удаление из стека
Procedure VSTEK (Var PST: U; Var ELEM:Integer); {PST – указатель на вершину стека
ELEM – инф. часть удаляемого элемента}
Var P: U;
Begin |
|
|
if PST<>Nil Then |
|
|
Begin |
|
|
P:=PST; |
ELEM:=PST^.Inf; |
|
PST:=PST^.Ukz; |
Dispose(P) |
|
End Else Elem:=0; |
3 |
|
End; |
||
|
Процедуры работы с очередью
4
Занесение элемента в очередь
Procedure ZOCH(Var PN, PK, VKL : U);
{PN, PK- указатели на «голову» и «хвост» очереди
VKL- указатель включаемого элемента}
Begin
If PK=Nil then begin
PK:=Vkl; PN:=Vkl end else
begin
PK^.Ukz:=VKL; PK:=VKL end
End;
5
Выборка и удаление элемента из очереди
Procedure VOCH (Var PN, PK: U; Var ELEM: integer); {PN, PK- указатели на «голову» и «хвост» очереди
ELEM – инф.поле удаляемого элемента} Var P: U;
Begin
if PN<>Nil Then begin
P:=PN; ELEM:=PN^.Inf;
PN:=PN^.Ukz; Dispose(P) end else
ELEM:=0; |
|
If PN=nil then PK:=nil |
|
End; |
6 |
|
Примеры реализации операций обработки списков
7
1) Удаление из списка k-го по счету элемента
K=3:
PSP |
2 |
3 |
5 |
8 |
8
Особые случаи:
А) k=1 – должен измениться указатель на начало списка;
Б) в списке менее k элементов – удаление невозможно.
9
Процедура удаления
Procedure del_k(var psp:u; k:integer;
var deleted:boolean); { psp – указатель на начало списка, K – номер удаляемого элемента,
deleted- признак успешности: false- если удаление невозможно, иначе true}
Var
m:integer; p, q:u;
10