#include #include #include /* struct ishciler adli siyahi elan edirik */ struct ishciler{ char ad[20]; int yash; struct ishciler *novb_el;}; /* cox vaxt siyahinin tipini elan etdikden sonra\ ilk ve son elementlerine istinad eden unvan deyishenlerinden istifade ederek yeni tip yaradiriq. ashagidaki kimi:*/ struct ishci_syh{ struct ishciler *ilk_el; /*siyahinin ilk elementine istinad eden unvan deyisheni*/ struct ishciler *son_el; /*siyahinin son elementine istinad eden unvan deyisheni*/ }; /*yeni yaratdigimiz tipden deyishen (siyahi) elan edek*/ struct ishci_syh *syh; /*indi ise siyahi ile istifade deceyimiz funksiyalari elan edek */ void elave_et(struct ishci_syh *,char *,int ); /*siyahiya yeni element elave etmek ucun*/ void cap_et(struct ishci_syh *); /* siyahinin elementlerini cap etmek ucun*/ int main(int argc, char *argv[]){ syh = malloc(sizeof(struct ishci_syh)); memset(syh,0,sizeof(struct ishci_syh)); /*ilk ve son elementleri NULL - a menimsedek*/ syh->ilk_el=NULL; syh->son_el=NULL; /*siyahiya obyektler elave edek*/ elave_et(syh,"Ali",45); elave_et(syh,"Samir",37); elave_et(syh,"Tahir",40); elave_et(syh,"Rustam",43); elave_et(syh,"Hidayet",55); elave_et(syh,"Tofiq",38); elave_et(syh,"Ibrahim",24); /*siyahinin elementlerini cap edek*/ cap_et(syh); return 0; } /* elave_et funksiyasi*/ void elave_et(struct ishci_syh *syh, char *s, int x){ struct ishciler *dey; dey=malloc(sizeof(struct ishciler)); memset(dey,0,sizeof(struct ishciler)); strcpy(dey->ad,s); dey->yash=x; dey->novb_el=NULL; /*obyekti yaratdiq, elementlerine qiymetler menimsetdik. Indi obyekti siyahiya elave edek*/ /*burada ashagidaki qaydadan istifade edeceyik. eger siyahida obyekt yoxdursa ona ilk ve son element yeni yaratdigimiz obyekte istinad etmelidir, eks halda obyekti siyahinin sonuna artiracayiq. bu cur elave etme meslenin shertinden ve proqramcinin isteyinden asili olur.*/ /*yoxlayaq eger siyahi boshdursa onda ilk ve son element yeni obyekte istinad etsin ve dey -in istinadini levg edek.*/ if ((syh->ilk_el==NULL)&&(syh->son_el==NULL)){ syh->ilk_el=dey; syh->son_el=dey; dey=NULL; } else{ /*siyahida artiq obyekt var, yeni obyekti (dey) siyahinin sonuna elave et ve dey-in istinadini legv et.*/ syh->son_el->novb_el=dey; /*dey-i siyahinin sonuna qoshuruq*/ syh->son_el=dey; /*son_el -i yeni yerine (sona) surushdururuk*/ dey=NULL; /*dey -in siyahiya istinadini levg edirirk*/ } } /* cap_et funksiyasi*/ void cap_et(struct ishci_syh *syh){ struct ishciler *dey; dey=syh->ilk_el; printf("siyahinin elementleri\n"); while(dey!=NULL){ printf("%s,%d\n",dey->ad,dey->yash); dey=dey->novb_el; } }