![]() |
|
|
Ðåôåðàò: Îñíîâíûå ïîíÿòèÿ àëãîðèòìè÷åñêîãî ÿçûêàpTop L-->¦ ¦ L=====- ã=====¬ ã=====¬ 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=====- pBegin L-->¦ NIL ¦<--- pEnd ¦ NIL ¦<--- pAux L=====- L=====- pBegin^.pNext:=pAux;
ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦---¬ ¦ D1 ¦ ----¦--* ¦ ¦ ¦ ----¦--* ¦ L=====- ¦ ¦=====¦ ¦ L=====- ¦=====¦ ¦ L=====- pBegin L-->¦ * ¦<--- pEnd ¦ NIL ¦<--- pAux L=====- L=====- ¦ ^ ¦ ¦ L---------------------------- pEnd:=pAux; ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦---¬ ¦ D1 ¦ ¦ *--¦---¬ ¦ ¦ ----¦--* ¦ L=====- ¦ ¦=====¦ L=====- ¦ ¦=====¦ ¦ L=====- pBegin L-->¦ * ¦ pEnd L-->¦ NIL ¦<--- pAux L=====- L=====- ¦ ^ ¦ ¦ L---------------------------- pEnd^.D:=D2;
ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦---¬ ¦ D1 ¦ ¦ D2 ¦ ----¦--* ¦ L=====- ¦ ¦=====¦ ¦=====¦ ¦ L=====- pBegin L-->¦ *--¦-------------------->¦ NIL ¦<--- pEnd L=====- L=====-
Äîáàâëåíèå ïîñëåäóþùèõ êîìïîíåíò ïðîèçâîäèòñÿ àíàëîãè÷íî.
Âûáîðêà êîìïîíåíòû èç î÷åðåäè îñóùåñòâëÿåòñÿ èç íà÷àëà î÷åðåäè, îäíîâðåìåííî êîìïîíåíòà èñêëþ÷àåòñÿ èç î÷åðåäè. Ïóñòü â ïàìÿòè ÝÂÌ ñôîðìèðîâàíà î÷åðåäü, ñîñòîÿùàÿ èç òðåõ ýëåìåíòîâ: ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦---¬ ¦ D1 ¦ ¦ D2 ¦ ¦ D3 ¦ ----¦--* ¦ L=====- ¦ ¦=====¦ ¦=====¦ ¦=====¦ ¦ L=====- pBegin L-->¦ *--¦------>¦ *--¦------>¦ NIL ¦<--- pEnd L=====- L=====- L=====-
Âûáîðêà êîìïîíåíòû âûïîëíÿåòñÿ ñëåäóþùèìè îïåðàòîðàìè: D1:=pBegin^.D; pBegin:=pBegin^.pNext;
ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦---¬ ¦ D1 ¦ ¦ D2 ¦ ¦ D3 ¦ ----¦--* ¦ L=====- ¦ ¦=====¦ ¦=====¦ ¦=====¦ ¦ L=====- pBegin ¦ ¦ ¦ --->¦ *--¦------>¦ NIL ¦<--- pEnd ¦ L=====- ¦ L=====- L=====- ¦ ¦ L--------------
Ïðèìåð. Ñîñòàâèòü ïðîãðàììó, êîòîðàÿ ôîðìèðóåò î÷åðåäü, äîáàâëÿåò â íåå ïðîèçâîëüíîå êîëè÷åñòâî êîìïîíåíò, à çàòåì ÷èòàåò âñå êîìïîíåí- òû è âûâîäèò èõ íà ýêðàí äèñïëåÿ.  êà÷åñòâå äàííûõ âçÿòü ñòðîêó ñèì- âîëîâ. Ââîä äàííûõ - ñ êëàâèàòóðû äèñïëåÿ, ïðèçíàê êîíöà ââîäà - ñòðîêà ñèìâîëîâ END. Program QUEUE; uses Crt; type Alfa= String[10]; PComp= ^Comp; Comp= record sD:Alfa; pNext:PComp end; var pBegin, pEnd: PComp; sC: Alfa; Procedure CreateQueue(var pBegin,pEnd: PComp; var sC: Alfa); begin New(pBegin); pBegin^.pNext:=NIL; pBegin^.sD:=sC; pEnd:=pBegin end; Procedure AddQueue(var pEnd:PComp; var sC:Alfa); var pAux: PComp; begin New(pAux); pAux^.pNext:=NIL; pEnd^.pNext:=pAux; pEnd:=pAux; pEnd^.sD:=sC end; Procedure DelQueue(var pBegin: PComp; var sC: Alfa); begin sC:=pBegin^.sD; pBegin:=pBegin^.pNext end; begin Clrscr; writeln(' ÂÂÅÄÈ ÑÒÐÎÊÓ '); readln(sC); CreateQueue(pBegin,pEnd,sC); repeat writeln(' ÂÂÅÄÈ ÑÒÐÎÊÓ '); readln(sC); AddQueue(pEnd,sC) until sC='END'; writeln(' ***** ÂÛÂÎÄ ÐÅÇÓËÜÒÀÒΠ*****'); repeat DelQueue(pBegin,sC); writeln(sC); until pBegin=NIL end.
40. Ë È Í Å É Í Û Å Ñ Ï È Ñ Ê È
 ñòåêè èëè î÷åðåäè êîìïîíåíòû ìîæíî äîáàâëÿòü òîëüêî â êàêîé - ëèáî îäèí êîíåö ñòðóêòóðû äàííûõ, ýòî îòíîñèòñÿ è ê èçâëå÷åíèþ êîìïî- íåíò. Ñâÿçíûé (ëèíåéíûé) ñïèñîê ÿâëÿåòñÿ ñòðóêòóðîé äàííûõ, â ïðîèçâîëü- íî âûáðàííîå ìåñòî êîòîðîãî ìîãóò âêëþ÷àòüñÿ äàííûå, à òàêæå èçûìàòü- ñÿ îòòóäà. Êàæäàÿ êîìïîíåíòà ñïèñêà îïðåäåëÿåòñÿ êëþ÷îì. Îáû÷íî êëþ÷ - ëèáî ÷èñëî, ëèáî ñòðîêà ñèìâîëîâ. Êëþ÷ ðàñïîëàãàåòñÿ â ïîëå äàííûõ êîìïî- íåíòû, îí ìîæåò çàíèìàòü êàê îòäåëüíîå ïîëå çàïèñè, òàê è áûòü ÷àñòüþ ïîëÿ çàïèñè. Îñíîâíûå îòëè÷èÿ ñâÿçíîãî ñïèñêà îò ñòåêà è î÷åðåäè ñëåäóþùèå: -äëÿ ÷òåíèÿ äîñòóïíà ëþáàÿ êîìïîíåíòà ñïèñêà; -íîâûå êîìïîíåíòû ìîæíî äîáàâëÿòü â ëþáîå ìåñòî ñïèñêà; -ïðè ÷òåíèè êîìïîíåíòà íå óäàëÿåòñÿ èç ñïèñêà. Íàä ñïèñêàìè âûïîëíÿþòñÿ ñëåäóþùèå îïåðàöèè: -íà÷àëüíîå ôîðìèðîâàíèå ñïèñêà (çàïèñü ïåðâîé êîìïîíåíòû); -äîáàâëåíèå êîìïîíåíòû â êîíåö ñïèñêà; -÷òåíèå êîìïîíåíòû ñ çàäàííûì êëþ÷îì; -âñòàâêà êîìïîíåíòû â çàäàííîå ìåñòî ñïèñêà (îáû÷íî ïîñëå êîìïî- íåíòû ñ çàäàííûì êëþ÷îì); -èñêëþ÷åíèå êîìïîíåíòû ñ çàäàííûì êëþ÷îì èç ñïèñêà. Äëÿ ôîðìèðîâàíèÿ ñïèñêà è ðàáîòû ñ íèì íåîáõîäèìî èìåòü ïÿòü ïåðå- ìåííûõ òèïà óêàçàòåëü, ïåðâàÿ èç êîòîðûõ îïðåäåëÿåò íà÷àëî ñïèñêà, âòîðàÿ - êîíåö ñïèñêà, îñòàëüíûå- âñïîìîãàòåëüíûå. Îïèñàíèå êîìïîíåíòû ñïèñêà è ïåðåìåííûõ òèïà óêàçàòåëü äàäèì ñëå- äóþùèì îáðàçîì: type PComp= ^Comp; Comp= record D:T; pNext:PComp end; var pBegin, pEnd, pCKey, pPreComp, pAux: PComp; ãäå pBegin - óêàçàòåëü íà÷àëà ñïèñêà, pEnd - óêàçàòåëü êîíöà ñïèñêà, pCKey, pPreComp, pAux - âñïîìîãàòåëüíûå óêàçàòåëè. Íà÷àëüíîå ôîðìèðîâàíèå ñïèñêà, äîáàâëåíèå êîìïîíåíò â êîíåö ñïèñêà âûïîëíÿåòñÿ òàê æå, êàê è ïðè ôîðìèðîâàíèè î÷åðåäè. ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ã=====¬ ¦ *--¦-¬ ¦ D1 ¦ ¦ D2 ¦ ¦ DN1 ¦ ¦ DN ¦ --¦--* ¦ L=====- ¦ ¦=====¦ ¦=====¦ ¦=====¦ ¦=====¦ ¦ L=====- pBegin L-->¦ *--¦--->¦ *--¦-....->¦ *--¦--->¦ NIL ¦<-- pEnd L=====- L=====- L=====- L=====-
Äëÿ ÷òåíèÿ è âñòàâêè êîìïîíåíòû ïî êëþ÷ó íåîáõîäèìî âûïîëíèòü ïî- èñê êîìïîíåíòû ñ çàäàííûì êëþ÷îì:
pCKey:=pBegin; while (pCKey<>NIL) and (Key<>pCKey^.D) DO pCKey:=pCKey^.pNext;
Çäåñü Key - êëþ÷, òèï êîòîðîãî ñîâïàäàåò ñ òèïîì äàííûõ êîìïîíåíòû. Ïîñëå âûïîëíåíèÿ ýòèõ îïåðàòîðîâ óêàçàòåëü pÑKey áóäåò îïðåäåëÿòü êîìïîíåíòó ñ çàäàííûì êëþ÷îì èëè òàêàÿ êîìïîíåíòà íå áóäåò íàéäåíà. Ïóñòü pCKey îïðåäåëÿåò êîìïîíåíòó ñ çàäàííûì êëþ÷îì. Âñòàâêà íîâîé êîìïîíåíòû âûïîëíÿåòñÿ ñëåäóþùèìè îïåðàòîðàìè:
New(pAux); ã===¬ pAux^.D:= DK1; ---¦-* ¦ ¦ L===- ¦ pCKey ¦ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ¦ *-¦--¬ ¦D1 ¦ ¦Key¦ ¦KK1¦ ¦DN ¦ ---¦-* ¦ L===- ¦ ¦===¦ ¦===¦ ¦===¦ ¦===¦ ¦ L===- pBegin L->¦ *-¦-...->¦ *-¦---->¦ *-¦-...->¦NIL¦<-- pEnd L===- L===- L===- L===-
ã===¬ ã===¬ ¦DK1¦ ---¦-* ¦ ¦===¦ ¦ L===- ¦ ¦<-- pAux L===-
pAux^.pNext:=pCKey^.pNext; pCKey^.pNext:=pAux;
ã===¬ ---¦-* ¦ ¦ L===- ¦ pCKey ¦ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ¦ *-¦--¬ ¦D1 ¦ ¦Key¦ ¦KK1¦ ¦DN ¦ ---¦-* ¦ L===- ¦ ¦===¦ ¦===¦ ¦===¦ ¦===¦ ¦ L===- pBegin L->¦ *-¦-...->¦ * ¦ ¦ *-¦-...->¦NIL¦<-- pEnd L===- L===- L===- L===- ¦ ^ ¦ ¦ ã===¬ ã===¬ ¦ ¦ ¦DK1¦ ---¦-* ¦ ¦ L----------¦===¦ ¦ L===- L------------------->¦-* ¦<-- pAux L===-
Äëÿ óäàëåíèÿ êîìïîíåíòû ñ çàäàííûì êëþ÷îì íåîáõîäèìî ïðè ïîèñêå íóæíîé êîìïîíåíòû ïîìíèòü àäðåñ ïðåäøåñòâóþùåé: pCKey:=pBegin; while (pCKey<>NIL) and (Key<>pCKey^.D) do begin pPreComp:=pCKey; pCKey:=pCKey^.pNext end;
Çäåñü óêàçàòåëü pCKey îïðåäåëÿåò êîìïîíåíòó ñ çàäàííûì êëþ÷îì, óêàçà- òåëü pPreComp ñîäåðæèò àäðåñ ïðåäèäóùåé êîìïîíåíòû.
Óäàëåíèå êîìïîíåíòû ñ êëþ÷îì Key âûïîëíÿåòñÿ îïåðàòîðîì: pPreComp^.pNext:=pCKey^.pNext;
pPreComp pCKey ã===¬ ã===¬ ¦ * ¦ ¦ * ¦ L===- L===- ¦ ¦ ¦ ¦ ¦ ¦ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ã===¬ ¦ *-¦--¬ ¦D1 ¦ ¦KK1¦ ¦Key¦ ¦KK2¦ ¦DN ¦ ---¦-* ¦ L===- ¦ ¦===¦ ¦===¦ ¦===¦ ¦===¦ ¦===¦ ¦ L===- pBegin L->¦ *-¦-...->¦ *-¦-¬ ¦ *-¦--->¦ *-¦-...->¦NIL¦<-- pEnd L===- L===- ¦ L===- L===- L===- ¦ ^ ¦ ¦ L---------------
Ïðèìåð. Ñîñòàâèòü ïðîãðàììó, êîòîðàÿ ôîðìèðóåò ñïèñîê, äîáàâëÿåò â íåãî ïðîèçâîëüíîå êîëè÷åñòâî êîìïîíåíò, âûïîëíÿåò âñòàâêó è óäàëåíèå êîìïîíåíòû ïî êëþ÷ó, à çàòåì ÷èòàåò è âûâîäèò âåñü ñïèñîê íà ýêðàí äèñïëåÿ.  êà÷åñòâå äàííûõ âçÿòü ñòðîêó ñèìâîëîâ. Ââîä äàííûõ - ñ êëàâèàòóðû äèñïëåÿ, ïðèçíàê êîíöà ââîäà - ñòðîêà ñèìâîëîâ END. Program LISTLINKED; uses Crt; type Alfa= String[10]; PComp= ^Comp; Comp= record sD:Alfa; pNext:PComp end; var pBegin, pEnd, pAux, pCKey, pPreComp: PComp; sC, sKey: Alfa; bCond: Boolean; Procedure CreateLL(var pBegin,pEnd: PComp; var sC: Alfa); begin New(pBegin); pBegin^.pNext:=NIL; pBegin^.sD:=sC; pEnd:=pBegin end; Procedure AddLL(var pEnd: PComp; var sC: Alfa); var pAux: PComp; begin New(pAux); pAux^.pNext:=NIL; pEnd^.pNext:=pAux; pEnd:=pAux; pEnd^.sD:=sC end; Procedure Find(var sKey: Alfa; var pBegin,pCKey,pPreComp: PComp; var bCond: Boolean); begin pCKey:=pBegin; while (pCKey <> NIL) and (sKey <> pCKey^.D) do begin pPreComp:=pCKey; pCKey:=pCKey^.pNext end; if (pCKey = NIL) and (sKey <> pCKey^.sD) then bCond:=FALSE else bCond:=TRUE end; Procedure InsComp(var sKey,sC: Alfa); var pAux:PComp; begin Find(sKey,pBegin,pCKey,pPreComp,bCond); New(pAux); pAux^.sD:=sC; pAux^.pNext:=pCKey^.pNext; pCKey^.pNext:=pAux end; Procedure DelComp(var sKey: Alfa; var pBegin: PComp); begin Find(sKey,pBegin,pCKey,pPreComp,bCond); pPreComp^.pNext:=pCKey^.pNext end; begin ClrScr; writeln(' ÂÂÅÄÈ ÑÒÐÎÊÓ '); readln(sC); CreateLL(pBegin,pEnd,sC); repeat writeln('ÂÂÅÄÈ ÑÒÐÎÊÓ '); readln(sC); AddLL(pEnd,sC) until sC='END'; writeln(' ***** ÂÛÂÎÄ ÈÑÕÎÄÍÎÃÎ ÑÏÈÑÊÀ *****'); pAux:=pBegin; repeat writeln(pAux^.sD); pAux:=pAux^.pNext; until pAux=NIL; writeln; writeln('ÂÂÅÄÈ ÊËÞ× ÄËß ÂÑÒÀÂÊÈ ÑÒÐÎÊÈ'); readln(sKey); writeln('ÂÂÅÄÈ ÂÑÒÀÂËßÅÌÓÞ ÑÒÐÎÊÓ'); readln(sC); InsComp(sKey,sC); writeln; writeln('ÂÂÅÄÈ ÊËÞ× ÓÄÀËßÅÌÎÉ ÑÒÐÎÊÈ'); readln(sKey); DelComp(sKey,pBegin); writeln; writeln(' ***** ÂÛÂÎÄ ÈÇÌÅÍÅÍÍÎÃÎ ÑÏÈÑÊÀ *****'); pAux:=pBegin; repeat writeln(pAux^.sD); pAux:=pAux^.pNext; until pAux=NIL end. |
![]() |
||
ÍÎÂÎÑÒÈ | ![]() |
![]() |
||
ÂÕÎÄ | ![]() |
|
Ðåôåðàòû áåñïëàòíî, ðåôåðàò áåñïëàòíî, êóðñîâûå ðàáîòû, ðåôåðàò, äîêëàäû, ðåôåðàòû, ðåôåðàòû ñêà÷àòü, ðåôåðàòû íà òåìó, ñî÷èíåíèÿ, êóðñîâûå, äèïëîìû, íàó÷íûå ðàáîòû è ìíîãîå äðóãîå. |
||
Ïðè èñïîëüçîâàíèè ìàòåðèàëîâ - ññûëêà íà ñàéò îáÿçàòåëüíà. |