Ðåôåðàò: Îñíîâíûå ïîíÿòèÿ àëãîðèòìè÷åñêîãî ÿçûêà
pTop^.pNext:=NIL; ¦ *--¦---¬ ¦ ¦
L=====- ¦ ¦=====¦
pTop L-->¦ NIL ¦
L=====-
ã=====¬ ã=====¬
pTop^.D:=D1; ¦ *--¦---¬ ¦ D1 ¦
L=====- ¦ ¦=====¦
pTop L-->¦ NIL ¦
L=====-
Ïîñëåäíèé îïåðàòîð èëè ãðóïïà îïåðàòîðîâ çàïèñûâàåò ñîäåðæèìîå
ïîëÿ äàííûõ ïåðâîé êîìïîíåíòû.
Äîáàâëåíèå êîìïîíåíòû â ñòåê ïðèçâîäèòñÿ ñ èñïîëüçîâàíèåì âñïî-
ìîãàòåëüíîãî óêàçàòåëÿ:
ã=====¬ ã=====¬ ã=====¬
New(pAux); ¦ *--¦---¬ ¦ ¦ ----¦--* ¦
L=====- ¦ ¦=====¦ ¦ L=====-
pTop ¦ ¦ ¦<--- pAux
¦ L=====-
¦
¦ ã=====¬
¦ ¦ D1 ¦
¦ ¦=====¦
L-->¦ NIL ¦
L=====-
ã=====¬ ã=====¬ ã=====¬
pAux^.pNext:=pTop; ¦ *--¦---¬ ¦ ¦ ----¦--* ¦
L=====- ¦ ¦=====¦<--- L=====-
pTop ¦ ¦ *--¦-¬ pAux
¦ L=====- ¦
¦ ¦
¦ ã=====¬ ¦
¦ ¦ D1 ¦ ¦
¦ ¦=====¦ ¦
L-->¦ NIL ¦<-
L=====-
ã=====¬ ã=====¬ ã=====¬
pTop:=pAux; ¦ *--¦---¬ ¦ ¦ ----¦--* ¦
L=====- ¦ ¦=====¦<--- L=====-
pTop L-->¦ *--¦-¬ pAux
L=====- ¦
¦
ã=====¬ ¦
¦ D1 ¦ ¦
¦=====¦ ¦
¦ NIL ¦<-
L=====-
ã=====¬ ã=====¬
pTop^.D:=D2; ¦ *--¦---¬ ¦ D2 ¦
L=====- ¦ ¦=====¦
pTop L-->¦ *--¦-¬
L=====- ¦
¦
ã=====¬ ¦
¦ D1 ¦ ¦
¦=====¦ ¦
¦ NIL ¦<-
L=====-
Äîáàâëåíèå ïîñëåäóþùèõ êîìïîíåíò ïðîèçâîäèòñÿ àíàëîãè÷íî.
Ðàññìîòðèì ïðîöåññ âûáîðêè êîìïîíåíò èç ñòåêà. Ïóñòü ê ìîìåíòó íà-
÷àëà âûáîðêè ñòåê ñîäåðæèò òðè êîìïîíåíòû:
ã=====¬ ã=====¬
¦ *--¦---¬ ¦ D3 ¦
L=====- ¦ ¦=====¦
pTop L-->¦ *--¦-¬
L=====- ¦
¦
ã=====¬ ¦
¦ D2 ¦ ¦
¦=====¦ ¦
--¦--* ¦<-
¦ L=====-
¦
¦ ã=====¬
¦ ¦ D1 ¦
¦ ¦=====¦
L>¦ NIL ¦
L=====-
Ïåðâûé îïåðàòîð èëè ãðóïïà îïåðàòîðîâ îñóùåñòâëÿåò ÷òåíèå äàííûõ
èç êîìïîíåíòû - âåðøèíû ñòåêà. Âòîðîé îïåðàòîð èçìåíÿåò çíà÷åíèå óêà-
çàòåëÿ âåðøèíû ñòåêà:
ã=====¬ ã=====¬
D3:=pTop^.D; ¦ *--¦---¬ ¦ D3 ¦
pTop:=pTop^.pNext; L=====- ¦ ¦=====¦
pTop ¦ ¦ ¦
¦ L=====-
¦
¦ ã=====¬
¦ ¦ D2 ¦
¦ ¦=====¦
L-->¦ *--¦-¬
L=====- ¦
¦
ã=====¬ ¦
¦ D1 ¦ ¦
¦=====¦ ¦
¦ NIL ¦<-
L=====-
Êàê âèäíî èç ðèñóíêà, ïðè ÷òåíèè êîìïîíåíòà óäàëÿåòñÿ èç ñòåêà.
Ïðèìåð. Ñîñòàâèòü ïðîãðàììó, êîòîðàÿ ôîðìèðóåò ñòåê, äîáàâëÿåò â
íåãî ïðîèçâîëüíîå êîëè÷åñòâî êîìïîíåíò, à çàòåì ÷èòàåò âñå êîìïîíåíòû
è âûâîäèò èõ íà ýêðàí äèñïëåÿ,  êà÷åñòâå äàííûõ âçÿòü ñòðîêó ñèìâî-
ëîâ. Ââîä äàííûõ - ñ êëàâèàòóðû äèñïëåÿ, ïðèçíàê êîíöà ââîäà - ñòðîêà
ñèìâîëîâ END.
Program STACK;
uses Crt;
type
Alfa= String[10];
PComp= ^Comp;
Comp= Record
sD: Alfa;
pNext: PComp
end;
var
pTop: PComp;
sC: Alfa;
Procedure CreateStack(var pTop: PComp; var sC: Alfa);
begin
New(pTop);
pTop^.pNext:=NIL;
pTop^.sD:=sC
end;
Procedure AddComp(var pTop: PComp; var sC: Alfa);
var pAux: PComp;
begin
NEW(pAux);
pAux^.pNext:=pTop;
pTop:=pAux;
pTop^.sD:=sC
end;
Procedure DelComp(var pTop: PComp; var sC:ALFA);
begin
sC:=pTop^.sD;
pTop:=pTop^.pNext
end;
begin
Clrscr;
writeln(' ÂÂÅÄÈ ÑÒÐÎÊÓ ');
readln(sC);
CreateStack(pTop,sC);
repeat
writeln(' ÂÂÅÄÈ ÑÒÐÎÊÓ ');
readln(sC);
AddComp(pTop,sC)
until sC='END';
writeln('****** ÂÛÂÎÄ ÐÅÇÓËÜÒÀÒÎÂ ******');
repeat
DelComp(pTop,sC);
writeln(sC);
until pTop = NIL
end.
39. Î × Å Ð Å Ä È
Î÷åðåäüþ íàçûâàåòñÿ äèíàìè÷åñêàÿ ñòðóêòóðà äàííûõ, äîáàâëåíèå êîì-
ïîíåíòû â êîòîðóþ ïðîèçâîäèòñÿ â îäèí êîíåö, à âûáîðêà îñóùåñòâëÿåòñÿ
ñ äðóãîãî êîíöà. Î÷åðåäü ðàáîòàåò ïî ïðèíöèïó:
FIFO (First-In, First-Out) -
ïîñòóïèâøèé ïåðâûì, îáñëóæèâàåòñÿ ïåðâûì.
Äëÿ ôîðìèðîâàíèÿ î÷åðåäè è ðàáîòû ñ íåé íåîáõîäèìî èìåòü òðè ïåðå-
ìåííûå òèïà óêàçàòåëü, ïåðâàÿ èç êîòîðûõ îïðåäåëÿåò íà÷àëî î÷åðåäè,
âòîðàÿ - êîíåö î÷åðåäè, òðåòüÿ - âñïîìîãàòåëüíàÿ.
Îïèñàíèå êîìïîíåíòû î÷åðåäè è ïåðåìåííûõ òèïà óêàçàòåëü äàäèì ñëå-
äóþùèì îáðàçîì:
type
PComp=^Comp;
Comp=record
D:T;
pNext:PComp
end;
var
pBegin, pEnd, pAux: PComp;
ãäå pBegin - óêàçàòåëü íà÷àëà î÷åðåäè, pEnd - óêàçàòåëü êîíöà î÷åðå-
äè, pAux - âñïîìîãàòåëüíûé óêàçàòåëü.
Òèï Ò îïðåäåëÿåò òèï äàííûõ êîìïîíåíòû î÷åðåäè.
Íà÷àëüíîå ôîðìèðîâàíèå î÷åðåäè âûïîëíÿåòñÿ ñëåäóþùèìè îïåðàòîðàìè:
ã=====¬ ã=====¬ ã=====¬
New(pBegin); ¦ *--¦---¬ ¦ ¦ ¦ ¦
L=====- ¦ ¦=====¦ L=====-
pBegin L-->¦ ¦ pEnd
L=====-
ã=====¬ ã=====¬ ã=====¬
pBegin^.pNext:=NIL; ¦ *--¦---¬ ¦ ¦ ¦ ¦
L=====- ¦ ¦=====¦ L=====-
pBegin L-->¦ NIL ¦ pEnd
L=====-
ã=====¬ ã=====¬ ã=====¬
pBegin^.D:=D1; ¦ *--¦---¬ ¦ D1 ¦ ¦ ¦
L=====- ¦ ¦=====¦ L=====-
pBegin L-->¦ NIL ¦ pEnd
L=====-
ã=====¬ ã=====¬ ã=====¬
pEnd:=pBegin; ¦ *--¦---¬ ¦ D1 ¦ ----¦--* ¦
L=====- ¦ ¦=====¦ ¦ L=====-
pBegin L-->¦ NIL ¦<--- pEnd
L=====-
Äîáàâëåíèå êîìïîíåíòû â î÷åðåäü ïðîèçâîäèòñÿ â êîíåö î÷åðåäè:
New(pAux);
ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬
¦ *--¦---¬ ¦ D1 ¦ ----¦--* ¦ ¦ ¦ ----¦--* ¦
L=====- ¦ ¦=====¦ ¦ L=====- ¦=====¦ ¦ L=====-
pBegin L-->¦ NIL ¦<--- pEnd ¦ ¦<--- pAux
L=====- L=====-
pAux^.pNext:=NIL;
ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬
¦ *--¦---¬ ¦ D1 ¦ ----¦--* ¦ ¦ ¦ ----¦--* ¦
L=====- ¦ ¦=====¦ ¦ L=====- ¦=====¦ ¦ L=====-
Ñòðàíèöû: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12