„Dinamikus adatszerkezetek tutorial” változatai közötti eltérés

Ferrero (vitalap | szerkesztései)
Ferrero (vitalap | szerkesztései)
110. sor: 110. sor:
Egyszerű feladat, nem is foglalkoznék vele sokat.
Egyszerű feladat, nem is foglalkoznék vele sokat.


%CODE{"cpp"}%
<pre>
  tmp=lista;
tmp=lista;
  while (tmp != NULL)
while (tmp != NULL)
  {
{
  /*
/*
  Ide írjuk, amit minden listaelemmel meg szeretnénk csinálni,
Ide írjuk, amit minden listaelemmel meg szeretnénk csinálni,
  pl. összeadni az értékeket, vagy összehasonítani őket egy
pl. összeadni az értékeket, vagy összehasonítani őket egy
  másik értékkel (= keresés);
másik értékkel (= keresés);
  '''/
*/
  tmp=tmp->next; // azaz vesszük a következő listaelem címét
tmp=tmp->next; // azaz vesszük a következő listaelem címét
// és azt használjuk tovább
// és azt használjuk tovább
  }
}
%ENDCODE%
</pre>
 
===Műveletek listaelemekkel===
===Műveletek listaelemekkel===


133. sor: 134. sor:


<pre>
<pre>
  /-----\   /-----\ /-----\   /-----\
  /-----\   /-----\ /-----\ /-----\
  |Aprev|---->| A |----> ... |Bprev|---->| B |----> ...
  |Aprev |---->|   A     |----> ... | Bprev |---->|   B     |----> ...
  \-----/   \-----/ \-----/   \-----/
  \-----/   \-----/ \-----/   \-----/
</pre>
</pre>


A-t és B-t szeretnénk megcserélni. Hát itt van:
A-t és B-t szeretnénk megcserélni. Hát itt van:


%CODE{"cpp"}%
<pre>
  Aprev->kov = B;
Aprev->kov = B;
  tmp1 = A->kov;
tmp1 = A->kov;
  A->kov   = B->kov;
A->kov = B->kov;
  B->kov   = tmp1;
B->kov= tmp1;
  Bprev->kov = A;
Bprev->kov = A;
%ENDCODE%
</pre>


Az eredmény:
Az eredmény:


<pre>
<pre>
  /-----\   /-----\ /-----\   /-----\
  /-----\   /-----\ /-----\ /-----\
  |Aprev|---->| B |----> ... |Bprev|---->| A |----> ...
  |Aprev |---->|   B     |----> ... | Bprev |---->|   A     |----> ...
  \-----/   \-----/ \-----/   \-----/
  \-----/   \-----/ \-----/   \-----/
</pre>
</pre>


====Listaelem beszúrása (C-t B és A közé)====
====Listaelem beszúrása (C-t B és A közé)====
<pre>
<pre>
/-----\   /-----\
      /-----\       /-----\
... ---->| A |---->| B |----> ...
... ---->|   A     |---->|   B     |----> ...
\-----/   \-----/
            \-----/       \-----/
</pre>
</pre>


Egyszerű: (C az új elem)
Egyszerű: (C az új elem)


%CODE{"cpp"}%
<pre>
  A->kov=C;
A->kov=C;
  C->kov=B;
C->kov=B;
%ENDCODE%
</pre>


...és kész.
...és kész.
177. sor: 178. sor:
Az előző ábrán, kitörölni B-t a következő:
Az előző ábrán, kitörölni B-t a következő:


%CODE{"cpp"}%
<pre>


/''' A B-t akarjuk kitörölni. Eltesszük a B utáni elem címét: '''/
/* A B-t akarjuk kitörölni. Eltesszük a B utáni elem címét: */
ELEM''' temp=B->kov;
ELEM* temp = B->kov;
/* Most felszabadítjuk a B által foglalt helyet, mert már nincs rá szükség '''/
/* Most felszabadítjuk a B által foglalt helyet, mert már nincs rá szükség */
free(B);
free(B);


/''' És beállítjuk A következő mutatójátt a B utáni elemre */
/* És beállítjuk A következő mutatójátt a B utáni elemre */
A->kov=temp;
A->kov = temp;
%ENDCODE%
</pre>


Ilyen egyszerű.
Ilyen egyszerű.
195. sor: 196. sor:
Sokféle képpen végrehajtható, itt egy primitív példa. A módszer, hogy páronként összehasonlítjuk az elemeket, és ha az adott rendezése elv szerint inverzióban állnak, megcseréljük őket. Aztán kezdjük előről az egészet, mindaddig, amíg el nem értük a lista végét úgy, hogy nem kellett cserélni:
Sokféle képpen végrehajtható, itt egy primitív példa. A módszer, hogy páronként összehasonlítjuk az elemeket, és ha az adott rendezése elv szerint inverzióban állnak, megcseréljük őket. Aztán kezdjük előről az egészet, mindaddig, amíg el nem értük a lista végét úgy, hogy nem kellett cserélni:


%CODE{"cpp"}%
<pre>
   pELEM rendez(pELEM lista)
   pELEM rendez(pELEM lista)
   {
   {
227. sor: 228. sor:
   }
   }


%ENDCODE%
</pre>
   
   
Az algoritmus értelemszerűen kis változtatással átírható csökkenő sorrendre, vagy más tipusu adatok rendezésére.
Az algoritmus értelemszerűen kis változtatással átírható csökkenő sorrendre, vagy más tipusu adatok rendezésére.
234. sor: 235. sor:


Ennyit a láncolt listákról.
Ennyit a láncolt listákról.


==Fák==
==Fák==