Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü dağıtık sistemler ders notlarım.

Yığın

//3.Bölüm-Yığın
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define SENTINEL -10000000

struct yigin //Yığın veri yapısı tanımlandı.
{
int *dizi;
int ust;
int kapasite;
};

struct yigin *yigin_olustur(int kapasite) //Yığın oluşturma 1.Yol
{
if(kapasite<=0)
{
printf("Kapasite pozitif bir tamsayi olmali...");
exit(1); //Program başarıyla sonlandırıldı.
}
struct yigin *ptr=(struct yigin *)malloc( sizeof(struct yigin) ); //Yığının boyutu kadar yer ayrıldı (12 Bayt).
ptr->dizi=(int *)malloc( kapasite*sizeof(int) );
ptr->ust=-1;
ptr->kapasite=kapasite;
return ptr;
}

void yigin_olustur_parametre_ile(int kapasite,struct yigin **y) //Yığın oluşturma 2.Yol
{ //**y => Alınan adresde değişiklik yapılacağı için.
if(kapasite<=0)
{
printf("Kapasite pozitif bir tamsayi olmali...");
exit(1); //Program başarıyla sonlandırıldı.
}
*y=(struct yigin *)malloc( sizeof(struct yigin) );
(*y)->dizi=(int *)malloc( kapasite*sizeof(int) );
(*y)->ust=-1;
(*y)->kapasite=kapasite;
}

int yigin_bosmu(struct yigin *y)
{
if(y->ust==-1)
return 1; //Yığın boş.
else
return 0; //Yığın boş değil.
}

int yigin_dolumu(struct yigin *y)
{
if(y->ust==y->kapasite-1)
return 1;
else
return 0;
}

void yigin_ekle(int eleman,struct yigin *y)
{
if( yigin_dolumu(y) )
{
printf("Yigin dolu ekleme yapilamiyor...");
return;
}
y->dizi[++y->ust]=eleman;
}

void yigin_yok_et(struct yigin **y) //A'nın tuttuğu adres değiştirileceği için ** .
{
free( (*y)->dizi );
free(*y);
*y=NULL;
}

struct yigin *kapasiteyi_artir(struct yigin **ptr,int kackat) //Kapasite artırma 1.Yol
{
struct yigin *yeni;
int i;
yeni=yigin_olustur( kackat*( (*ptr)->kapasite) ); //Eskisi yeniye kopyalandı.
for(i=0;i<=(*ptr)->ust;i++)
yeni->dizi[i]=(*ptr)->dizi[i];
yeni->ust=(*ptr)->ust;
yigin_yok_et( &(*ptr) ); //yigin_yok_et(ptr);
return yeni;
}

void kapasiteyi_artir_yeni(struct yigin **ptr,int kackat) //Kapasite artırma 2.Yol
{
struct yigin *yeni;
int i;
yeni=yigin_olustur( kackat*( (*ptr)->kapasite) );
for(i=0;i<=(*ptr)->ust;i++)
yeni->dizi[i]=(*ptr)->dizi[i];
yeni->ust=(*ptr)->ust;
yigin_yok_et( &(*ptr) ); //yigin_yok_et(ptr);
*ptr=yeni;
}

void yigin_yaz(struct yigin *y)
{
int i;
printf("Yigin Kapasitesi       :%d\n",y->kapasite);
printf("Yigindaki Eleman Sayisi:%d\n ",y->ust+1);
for(i=y->ust;i>=0;i--)
{
printf("%4d ",y->dizi[i]);
}
printf("\n");
}

int yigin_eleman_sil(struct yigin *y)
{
if( yigin_bosmu(y) )
return SENTINEL;
return y->dizi[y->ust--];
}

int main()
{
struct yigin *A=NULL;
struct yigin *B=NULL;
int silinen;

A=yigin_olustur(10); //Kapasitesi 10 olan yığın oluşturuluyor.
//yigin_olustur_parametre_ile(10,&A);

yigin_ekle(12,A);
yigin_ekle(56,A);
yigin_ekle(-20,A); //En son eklenen eleman yığının en tepesine eklenir.
yigin_yaz(A); //-20 56 12

silinen=yigin_eleman_sil(A); //Yığının başındaki elemandan silinmeye başlanır.
printf("\nSilinen:%4d\n",silinen);
yigin_yaz(A); //56 12

yigin_ekle(100,A); //Yığının başına 100 elemanı eklenir. Sonuna eklenmez.
yigin_yaz(A); //100 56 12

//A=kapasiteyi_artir(&A,3); //1.Yol
kapasiteyi_artir_yeni(&A,3); //2.Yol
yigin_yaz(A); //100 56 12
//En son yığın kapasitesi 30 olur.

getch();
return 0;
}

Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü dağıtık sistemler ders notlarım.

Çift Yönlü Bağlı Liste

//2.Bölüm-Çift Yönlü Bağlı Listeler
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct ciftYonluEleman
{
int icerik;
struct ciftYonluEleman *ileri;
struct ciftYonluEleman *geri;
};

struct ciftYonluListe
{
struct ciftYonluEleman *bas;
struct ciftYonluEleman *son;
};

struct ciftYonluEleman *elemanOlustur(int icerik)
{
struct ciftYonluEleman *yeni;
yeni=(struct ciftYonluEleman *)malloc( sizeof(struct ciftYonluEleman) );
if(yeni==NULL)
{
printf("Hata...");
exit(1);
}
yeni->icerik=icerik;
yeni->geri=yeni->ileri=NULL;
return yeni;
}

void ciftYonluDiziBaslat(struct ciftYonluListe **liste)
{
*liste=(struct ciftYonluListe *)malloc( sizeof(struct ciftYonluListe) );
if(*liste==NULL)
{
printf("Hata...");
exit(1);
}
(*liste)->bas=(*liste)->son=NULL;
}

void liste_basina_ekle(int icerik,struct ciftYonluListe *liste)
{
struct ciftYonluEleman *yeni;
yeni=elemanOlustur(icerik);
if(liste->son==NULL)
{
liste->son=yeni;
}
else
{
liste->bas->geri=yeni;
yeni->ileri=liste->bas;
}
liste->bas=yeni;
}

void liste_sonuna_ekle(int icerik,struct ciftYonluListe *liste)
{
struct ciftYonluEleman *yeni;
yeni=elemanOlustur(icerik);
if(liste->bas==NULL)
liste->bas=yeni;
else
{
liste->son->ileri=yeni;
yeni->geri=liste->son;
}
liste->son=yeni;
}

void listeYazdir(struct ciftYonluListe *liste)
{
struct ciftYonluEleman *bas=liste->bas;
while(bas!=NULL)
{
printf("%4d",bas->icerik);
bas=bas->ileri;
}
printf("\n");
}

void listeSondanYazdir(struct ciftYonluListe *liste)
{
struct ciftYonluEleman *son=liste->son;
while(son!=NULL)
{
printf("%4d",son->icerik);
son=son->geri;
}
printf("\n");
}

int main()
{
struct ciftYonluListe *liste;
ciftYonluDiziBaslat(&liste);

liste_basina_ekle(10,liste);
liste_basina_ekle(15,liste);

liste_sonuna_ekle(32,liste);
liste_sonuna_ekle(45,liste);
listeYazdir(liste); //15 10 32 45
listeSondanYazdir(liste); //45 32 10 15

getch();
return 0;
}


Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü dağıtık sistemler ders notlarım.

Tek Yönlü Bağlı Liste

//1.Bölüm-Tek Yönlü Bağlı Listeler
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct hucre
{
int icerik;
struct hucre *sonraki;
};

struct hucre *hucre_olustur(int icerik)
{
struct hucre *a;
a=(struct hucre *)malloc( sizeof(struct hucre) );
if(a==NULL)
{
printf("Yer ayrilamadi...");
exit(1);
}
a->icerik=icerik;
a->sonraki=NULL;
}

void liste_basina_ekle(int icerik,struct hucre **liste_basi)
{
struct hucre *a=hucre_olustur(icerik);
a->sonraki=*liste_basi;
*liste_basi=a;
}

void liste_sonuna_ekle(int icerik,struct hucre **liste_basi)
{
struct hucre *a=hucre_olustur(icerik);
if(*liste_basi==NULL)
{
a->sonraki=*liste_basi;
*liste_basi=a;
}
else
{
struct hucre *x=*liste_basi;
while(x->sonraki!=NULL)
{
x=x->sonraki;
}
x->sonraki=a;
}
}

void liste_sirali_ekle(int icerik,struct hucre **liste_basi)
{
struct hucre *a,*b,*eklenen;
b=*liste_basi;
while(b!=NULL && b->icerik <= icerik)
{
if(b->icerik==icerik) //Aynı iki değer listeye eklenmemektedir.
return;
a=b;
b=b->sonraki;
}
eklenen=hucre_olustur(icerik);
if(b==*liste_basi)
{
eklenen->sonraki=*liste_basi;
*liste_basi=eklenen;
}
else
{
a->sonraki=eklenen;
eklenen->sonraki=b;
}
}

void liste_yaz(struct hucre *liste_basi)
{
while(liste_basi!=NULL)
{
printf("%4d ",liste_basi->icerik);
liste_basi=liste_basi->sonraki;
}
printf("\n");
}

void liste_yaz_recursive(struct hucre *liste_basi)
{
if(liste_basi!=NULL)
{
printf("%4d ",liste_basi->icerik);
liste_yaz_recursive(liste_basi->sonraki);
}
else
printf("\n");
}

void tersten_liste_yaz_recursive(struct hucre *liste_basi)
{
if(liste_basi!=NULL)
{
tersten_liste_yaz_recursive(liste_basi->sonraki);
printf("%4d ",liste_basi->icerik);
}
else
printf("\n");
}

void liste_sirala(struct hucre **liste_basi)
{
struct hucre *a,*b,*c,*d;
if(*liste_basi==NULL || (*liste_basi)->sonraki==NULL )
return;
d=(*liste_basi)->sonraki;
(*liste_basi)->sonraki=NULL;
while(d!=NULL)
{
c=d;
d=d->sonraki;
b=*liste_basi;
while(b!=NULL && b->icerik < c->icerik)
{
a=b;
b=b->sonraki;
}
if(b==*liste_basi)
{
c->sonraki=*liste_basi;
*liste_basi=c;
}
else
{
a->sonraki=c;
c->sonraki=b;
}
}
}

void liste_ters_cevir(struct hucre **liste_basi)
{
struct hucre *a,*b;
a=NULL;
while(*liste_basi!=NULL)
{
b=*liste_basi;
*liste_basi=(*liste_basi)->sonraki;
b->sonraki=a;
a=b;
}
*liste_basi=a;
}

void liste_eleman_sil(int silinen,struct hucre **liste_basi)
{
struct hucre *temp=*liste_basi;
struct hucre *once;
while(temp!=NULL && temp->icerik!=silinen)
{
once=temp;
temp=temp->sonraki;
}
if(temp==NULL)
return;
else
{
if(temp==*liste_basi)
*liste_basi=(*liste_basi)->sonraki;
else
once->sonraki=temp->sonraki;
free(temp);
}
}

void liste_yoket(struct hucre **liste_basi)
{
struct hucre *simdiki;
while(*liste_basi!=NULL)
{
simdiki=(*liste_basi);
*liste_basi=(*liste_basi)->sonraki;
free(simdiki);
}
}

int main()
{
struct hucre *liste1=NULL;
liste_basina_ekle(10,&liste1);
liste_basina_ekle(15,&liste1);
liste_sonuna_ekle(32,&liste1);
liste_sonuna_ekle(45,&liste1);

liste_sirali_ekle(12,&liste1); //12 15 10 32 45

liste_yaz(liste1);

//liste_yaz(liste1); // 12 15 10 32 45
//liste_yaz_recursive(liste1); // 12 15 10 32 45
//tersten_liste_yaz_recursive(liste1); // 45 32 10 15 12

//liste_eleman_sil(45,&liste1);
        //liste_yoket(&liste1);

//liste_sirala(&liste1);
//liste_yaz(liste1); //10 12 15 32 45

//liste_ters_cevir(&liste1);
//liste_yaz(liste1); //45 32 10 15 12

getch();
return 0;
}

Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü ders notlarım.



Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü ders notlarım.

Web tasarım dersteki kodlar.