Навбат элементини йўќотиш
Бошланѓич ћолат:
Й ўќотилаётган элементдан ахборотни олиб val ўзгарувчига ўтказиш ва элементга ёрдамчи Р кўрсаткични ўрнатиш:
Н авбат боши BegQ кўрсаткичини, биринчи элементда саќланадиган Link майдони ќийматидан фойдаланиб, навбатдаги элементга алмаштириш. Шундан кейин, Р ќўшимча кўрсаткичдан фойдаланиб, навбатнинг бошланѓич элементи хотираси бўшайди:
Мисол сифатида ўн элементдан иборат навбатни яратиш ва йўќотиш дастурини келтирамиз. Унда навбат билан ишлаш учун иккита процедура ишлатилади:
1) AddE1 процедура, у навбат ћолатига боѓлиќ равишда биринчи элементни яратади ёки навбатдаги элементни навбат охирига ќўшади;
2) GetDelEl процедура, у навбатнинг бошланѓич элементидан, шундан кейин унинг хотирасини тозалаш шарти билан, ахборотни олади.
program Queue;
uses Crt;
type
TPtr = ^TElem;
TElem = record
Inf : Real;
Link : TPtr
end;
var
BegQ, EndQ : TPtr;
Value : Real;
i : Byte;
procedure AddEl (Val : Real);
var
P : TPtr;
begin
New (P);
P^.Inf := Val;
P^.Link := nil;
if EndQ = nil {агар навбатнинг биринчи элементи яратилаетган бўлса}
then BegQ := P
{агар навбатнинг кейинги элементи яратилаетган бўлса}
else EndQ^.link :» P;
EndQ := P
end;
procedure GatDelEl( var Val : Real);
var
P : TPtr;
begin
Val := BegQ^.Inf;
P := BegQ;
BegQ := P^.Link;
if BegQ = nil {агар навбатнинг охирги элементи йўќотилаетган бўлса}
then EndQ := nil;
Dispose (P)
end;
begin
ClrScr;
{Кўрсаткичларнинг бошланѓич ўрнатишлари }
BegQ := nil;
EndQ : = nil;
{10 та элементдан иборат навбат яратиш }
Do'stlaringiz bilan baham: |