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.

Ç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;
}