„Dinamikus adatszerkezetek tutorial” változatai közötti eltérés
| (2 közbenső módosítás ugyanattól a felhasználótól nincs mutatva) | |||
| 39. sor: | 39. sor: | ||
<pre> | <pre> | ||
int x; | int x; | ||
int *px = &x; | int *px = &x; // itt a 'px' az 'x' változó címét veszi fel | ||
int *mp = (int *) malloc ( sizeof(int)*5 ); / | int *mp = (int *) malloc ( sizeof(int)*5 ); // itt kértünk egy olyan memóriaterületet, ahol elfér 5 int. Ennek a címét kapjuk vissza. | ||
int **pp = ∓ | int **pp = ∓ // igen, a pointerre mutató pointer... Értéke egy olyan memóriacím, ahol elfér egy pointer. | ||
/ | |||
</pre> | </pre> | ||
| 53. sor: | 52. sor: | ||
<pre> | <pre> | ||
int x= ... ; | int x= ... ; | ||
mp = mp + x; /* FONTOS! az mp-ben tárolt memóriacím nem x-szel fog növekedni, hanem x * sizeof(*mp)-vel, azaz a mutatott típus méretével. */ | mp = mp + x; /* FONTOS! az mp-ben tárolt memóriacím nem x-szel fog növekedni, hanem x * sizeof(*mp)-vel, azaz a mutatott típus méretével. */ | ||
mp++; | mp++; /* a pointer tipusa int *, tehát az érték sizeof(int)-tel fog növekedni. | ||
Hasznos, ha egy dinamikus tömbben a következő elemre akarunk mutatni. */ | |||
char *d= ... ; | char *d= ... ; | ||
d++; /* a következő karakterre fog mutatni */ | d++; /* a következő karakterre fog mutatni */ | ||
d--; /* ugyanez, csak visszafelé */ | d--; /* ugyanez, csak visszafelé */ | ||
</pre> | </pre> | ||
| 67. sor: | 67. sor: | ||
<pre> | <pre> | ||
int a=2006 , b; | int a=2006 , b; | ||
int *p=&a; | int *p=&a; // ilyenkor 'p' mutat 'a'-ra | ||
int b=(*p); // 'b' = a 'p' által mutatott címen lévő érték (2006). | int b=(*p); // 'b' = a 'p' által mutatott címen lévő érték (2006). | ||
(*p)=26; | (*p)=26; // a 'p' által mutatott címre beírunk 26-ot. | ||
</pre> | </pre> | ||
| 172. sor: | 172. sor: | ||
<pre> | <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; | ||
| 183. sor: | 182. sor: | ||
Ilyen egyszerű. | Ilyen egyszerű. | ||
====Rendezés==== | ====Rendezés==== | ||
| 413. sor: | 411. sor: | ||
Kezdjük már szeretni a rekúúúrziót ugye? | Kezdjük már szeretni a rekúúúrziót ugye? | ||
<pre> | |||
void kiir(pBIFA fa) { | |||
if (fa==NULL) return; | |||
if (fa->jobb) kiir(fa->jobb); | |||
printf("%d ",fa->adat); | |||
if (fa->bal) kiir(fa->bal); | |||
return; | |||
} | |||
</pre> | |||
Általában növekvő sorrendben szokták kérni a kiíratást (=> bal, printf, jobb). Ha megvan a fa==NULL vizsgálat, akkor le lehet spórolni az if(fa->irány)-t. | Általában növekvő sorrendben szokták kérni a kiíratást (=> bal, printf, jobb). Ha megvan a fa==NULL vizsgálat, akkor le lehet spórolni az if(fa->irány)-t. | ||