PDA

Tam Sürümünü Görmek İçin : bağlantılı liste ile ilgili hata..


dreamscöpçe
31/12/2007, 13:25
aşağıda yazmış olduğum fonksiyondaki kalın olarak yazdığım satır için için şöyle bir hata veriyo:
error C2106: '=' : left operand must be l-value
ben hatayı düzeltemiyorum. yardımcı olabilirseniz çok sevinirim:rolleyes:


typedef struct soldier{char *soldname[80];
struct soldier *next;
} sold;

void insert(sold *q,char *name[80]);

sold *bas,*son;


void insert(sold *q, char *name[80]) /*eleman ekleme fonksiyonu*/
{
q=(sold*)malloc(sizeof(sold)); /* eleman eklemek icin bellekten yer actik*/
q->soldname=name;
if (bas==NULL) {bas=q; /* eger eklenecek eleman ilk eleman olcaksa bas da son da bu elman olacak*/
son=q;
son->next=bas; /* ve dairesel yapabilmek icin son elmanin gosterdigi eleman bas olacak*/
return;
}
/*eger listede birden fazla eleman varsa*/
son->next=q; /*son elmanin gosterdigi eleman yeni eklenecek eleman olacak*/
son=q; /*artik son eleman bu eklenen eleman olacak*/
son->next=bas; /*eklenen eleman son eleman oldugu icin bu elemanin gosterdigi eleman da bas olacak*/
}


sysdev
31/12/2007, 13:44
soldname dizinin ismi, dizi isimleri sol değer olamazlar. [] yada * operatorleri ile dizi elemanına atama yapabilirsin.

acehreli
31/12/2007, 19:54
Sen, name'in icindeki karakterleri soldname'e kopyalamak istiyorsun. Onun icin strcpy:

strcpy(q->soldname, name);

Ali

sinanonur
02/01/2008, 15:16
metinleri birbirine eşitlemek için bi metin alanının içine gerekli metni kopyalamak gerekli aksi takdirde sadece işaretçileri günlemiş olursunuz. Yani acehreli'nin dediğini yapmalısınız.

Bir de Türkçe isimler konusunda sanırım değişik kullanımlar var ama yaygın olarak bağlantılı liste yerine bağlı liste kullanılıyor sanırım. (Tek bağlı liste, çift bağlı liste vs...)