PDA

Tam Sürümünü Görmek İçin : struct


quasimodo
15/02/2007, 14:55
Bunun anlami ne?
struct LIST{
struct LIST * next;
};


pandaman
15/02/2007, 15:34
LIST yapısının içinde LIST türünde bir yapıyı gösteren bir işaretçi tanımlanmış. Yani tek yönlü bir bağlı liste.

quasimodo
15/02/2007, 15:54
LIST yapısının içinde LIST türünde bir yapıyı gösteren bir işaretçi tanımlanmis oldugunun bende farkindayim ama icerideki eleman nereye isaret ediyor ?

ceeyt
15/02/2007, 18:19
list turunden herhangi bir nesneye.Listeye ekleme islemi icin bir fonksiyon tanimladigini dusun, bu fonksiyon yeni bir List nesnesi olusturup *next'e isaret ettirsin.Boylece listeye bir eleman eklemis oldun.Hos bu liste bir bilgi saklamiyor :) Gordugun gibi sonraki eleman bellekte o an uygun olan farkli bir yerde olabilir.

Bagli listeleri diziler gibi dusunebilirsin ama farkli olarak elemanlarinin bellekte art arda dizilme zorunluluklari yoktur.

quasimodo
16/02/2007, 19:52
Bu ifadeyi boyle yazabilirmiydim?

typedef struct{
LIST * next;
}LIST;

acehreli
16/02/2007, 21:18
Evet ama C++'ta gerek yok. Sanirim artik C'de de gerek yok ama hic emin degilim.

Ali

quasimodo
17/02/2007, 23:41
Gerek yok derken ? Yerine baska bisey mi yaziliyor ?

acehreli
18/02/2007, 19:29
C++'ta onun yerine ilk yazdigini kullanabilirsin:

struct LIST { /* ... */ };

Sonra kod icinde bir daha 'struct' yazmadan, yalnizca LIST diyebilirsin:

LIST benim_listem; // C++'ta

Oyle tanimlandigi zaman, C'de LIST'in basina bir de struct yazmak gerekir:

struct LIST benim_listem; // Normalde C'de

Iste C'de bundan kacinmak icin o son gosterdigin typedef yontemi uygulanir. Orada yapilan, kendi adi olmayan bir yapiya typedef ile yeni bir ad takmaktir. O yuzden, o typedef yontemi de bize C'de 'struct' kullanmadan yazmayi saglar:

LIST benim_listem; // typedef sayesinde C'de

Yani, C++'ta 'struct' yazmak zaten gerekmedigi icin, o typedef yontemine orada gerek yoktur.

Not: C'nin yeni standardindaki yeniliklerden uzak kaldim. Belki C++'tan olan bu fark da kaldirilmistir.

Ali