PDA

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


quasimodo
19/06/2007, 23:41
Ben bir fonksiyon istiyorumki su isi yapicak. Fonksiyona
bagli listenin bir elemaninin adresini gondericem oda bana
ilk elemaninin adresini geri vericek. Nasil yapabilirim?


acehreli
19/06/2007, 23:44
Ben tam anlayamadim: herhangi bir elemanin adresini gondereceksin ama hep ilk elemanin adresini alacaksin, oyle mi?

Ali

quasimodo
19/06/2007, 23:53
Tam olarak mumkun mu onuda bilmiyorum ama aynen oyle.

kiyas
19/06/2007, 23:57
eger gonderdigin liste cift bagli liste ise bu dediğin mumkun gonderdiğin elemandan geriye dogru null olana kadar dongu kurarsın olur...kolay gele...

quasimodo
19/06/2007, 23:59
hayir single link list.

Euclides
20/06/2007, 00:28
eğer single ise circular yaparsın, son eleman list head'i gösterir.

acehreli
20/06/2007, 00:55
Baska bir yol: Her dugum basi gosterir.

Ali

quasimodo
20/06/2007, 16:58
Ben aslinda bir bagli listeyi ters ceviren fonksiyon yazmayi dusundum
ama sonra aklima ilk elemani degilde herhangi bir elemanin adresini
gondersemde ters cevirebilmeli diye dusundum. Herhangi bir elemanin
adresinin yaninda kacinci eleman oldugunu gosteren bir parametre
yollayarakta yapilabilirdi ama ben boyle yapmak istemedim.
Circular list hosuma gitti. Bunu yapmak icin listenin icinde birde
void isaretcimi tutmam gerekecek ? Ama bu sekilde yaparsam her
dugum list head i gosterir sadece ensondaki dugumun gostermesini
nasil saglayabilirim?

sekizbit
24/06/2007, 03:24
Ben aslinda bir bagli listeyi ters ceviren fonksiyon yazmayi dusundum
ama sonra aklima ilk elemani degilde herhangi bir elemanin adresini
gondersemde ters cevirebilmeli diye dusundum. Herhangi bir elemanin
adresinin yaninda kacinci eleman oldugunu gosteren bir parametre
yollayarakta yapilabilirdi ama ben boyle yapmak istemedim.
Circular list hosuma gitti. Bunu yapmak icin listenin icinde birde
void isaretcimi tutmam gerekecek ? Ama bu sekilde yaparsam her
dugum list head i gosterir sadece ensondaki dugumun gostermesini
nasil saglayabilirim?

Herhangi bir elemanın adresini ve kaçıncı eleman olduğunu göndererek en başa dönemeyebilirsiniz. Çünkü link liste bağlanmış yeni elemanlar hafızada seri dizili olmak zorunda değil, arada başka veriler olabilir.

Daha güzel yöntemleri varmı bilmiyorum ama ben link list yaparken composition yapıyorum. üst sınıfta link listin 1. verisini falan tutturuyorum, alt sınıftada tutması gereken verileri. Ufak bi kod yazmaya çalışcam ama kullandığım bilgisayarda derleyici olmadiği için bir sürü hatası olacaktır büyük ihtimalle.


Class data{
public:
data *next ;
int veri ;
data () {}
void push(int x) {this->veri = x ; next = new data ; }
} ;

Class list {
data *first ;
data *last ;
data *lastfull ;

list () {
first = new data ;
last = first ;
lastfull = NULL
}

void koy(int a) {
last->push(a) ;
lastfull = last ;
last = last->next ;
}


} ;

list liste ;

liste.koy(3) ;
liste.koy(6);

cout<<liste.first->veri ;