ñêà÷àòü ðåôåðàòû
  RSS    

Ìåíþ

Áûñòðûé ïîèñê

ñêà÷àòü ðåôåðàòû

ñêà÷àòü ðåôåðàòûÐåôåðàò: Îñíîâíûå ïîíÿòèÿ àëãîðèòìè÷åñêîãî ÿçûêà

                     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.


Ñòðàíèöû: 1, 2, 3, 4, 5, 6, 7


Íîâîñòè

Áûñòðûé ïîèñê

Ãðóïïà âÊîíòàêòå: íîâîñòè

Ïîêà íåò

Íîâîñòè â Twitter è Facebook

  ñêà÷àòü ðåôåðàòû              ñêà÷àòü ðåôåðàòû

Íîâîñòè

ñêà÷àòü ðåôåðàòû

Îáðàòíàÿ ñâÿçü

Ïîèñê
Îáðàòíàÿ ñâÿçü
Ðåêëàìà è ðàçìåùåíèå ñòàòåé íà ñàéòå
© 2010.