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 ?
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
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.