Welcome to My Blog 👋

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

Veri Yapıları - Ders 4 (Yığın (Dinamik Liste))



  November 11, 2016    Labels:,,,, 

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

(Yığın (Dinamik Liste))


//4.Bölüm-Yığın (Dinamik Liste Şeklinde)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define SENTINEL -10000000

struct dugum
{
int icerik;
struct dugum *link;
};

struct dugum *dugum_olustur(int icerik)
{
struct dugum *d;
d=(struct dugum *)malloc( sizeof(struct dugum) );
if(d==NULL)
{
printf("Yer ayrilamadi...");
exit(1);
}
d->icerik=icerik;
d->link=NULL;
return d;
}

void ekle(int icerik,struct dugum **dugum_gostergesi)
{
struct dugum *d=dugum_olustur(icerik);
d->link=*dugum_gostergesi;
*dugum_gostergesi=d;
}

void yazdir(struct dugum *yigin_gostergesi)
{
while(yigin_gostergesi)
{
printf("%4d ",yigin_gostergesi->icerik);
yigin_gostergesi=yigin_gostergesi->link;
}
printf("\n");
}

void yazdir_yanlis(struct dugum **yigin_gostergesi) //Mantık hatası! 
{
while(*yigin_gostergesi)
{
printf("%4d ",(*yigin_gostergesi)->icerik);
*yigin_gostergesi=(*yigin_gostergesi)->link;
}
printf("\n");
}

int cikar(struct dugum **yigin_gostergesi)
{
struct dugum *d;
int icerik;
if(*yigin_gostergesi==NULL)
return SENTINEL;
d=*yigin_gostergesi;
*yigin_gostergesi=(*yigin_gostergesi)->link;
icerik=d->icerik;
free(d);
//return d->icerik; //Hata! d silindiği için içeriğe erişilemez.
return icerik;
}

int yigin_bosmu(struct dugum *yigin_isaretcisi)
{
if(yigin_isaretcisi==NULL)
return 1; //0'ın haricindekiler true olduğu için return -1 de yazılabilir.
else
return 0;
}

int main()
{
int a;
struct dugum *yigin_gostergesi=NULL;

ekle(100,&yigin_gostergesi);
ekle(20,&yigin_gostergesi);
ekle(60,&yigin_gostergesi);
yazdir(yigin_gostergesi); // 60 20 100
yazdir(yigin_gostergesi); // 60 20 100

//yazdir_yanlis(&yigin_gostergesi); //1.seferde elemanlar ekrana yazılacaktır.
//yazdir_yanlis(&yigin_gostergesi); //Ancak 2.seferde ve sonrası için ekrana yazılmayacaktır.

a=cikar(&yigin_gostergesi); //Yığının en tepesindeki eleman dışarıya çıkarılacaktır.
if(a!=SENTINEL)
printf("%4d \n",a); //60
yazdir(yigin_gostergesi); //20 100

getch();
return 0;
}


No comments:

Post a Comment