Welcome to My Blog 👋

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

Veri Yapıları - Ders 1 (Tek Yönlü Bağlı Listeler)



  October 19, 2016    Labels:,,,, 

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

No comments:

Post a Comment