Veri Yapıları Final Notları 1 – Dizi Stack Bellek

#include <stdio.h>
#include <stdlib.h>
//STACK bellek LIFO mantığı ile çalışır.
//LIFO, son giren ilk çıkan anlamına gelmektedir.
//Örneğin minibüsçülerin bozuk paraları kuruş kuruş ayırdıkları kutuları görmüşsünüzdür. Para üstünü yolcuya verirken en sonda bulan bozukluğu veririz. yani son koyduğumuz bozuk parayı ilk vermiş olduk. resim için tıklayın
//işte STACK bellekte bu şekilde çalışır. Bellek dolduğu zaman STACK bellek mantığı ile son girenin çıkartılması sağlanır.
#define STACK_SIZE 5//#define ön işlemci komutudur. STACK_SIZE bu komutun değişken ismi 5 ise değeridir.
char stack[STACK_SIZE] = {0};//char tipinde stack adında ki dizi STACK_SIZE kadar uuznlukta olacak ve 0.indisine 0 değeri atanıyor.
int pos=0;//tam sayı tipinde ki pos değişkenine 0 değeri yollanıyor.
void push(char c)//STACK_SIZE da belirtilen alan kadar öğenin saklanmasını sağlayan fonksiyon
{
if(pos>=STACK_SIZE) return;//eğer pos değişkeninin değeri saklanacak öğe sayısından(STACK_SIZE ın değeri) fazla ise çık
pos++;//metot sonra ki çağrılışında 1 sonra ki indise geçebilmesi için 1 arttırılıyor.
}
char pop()//pos değeri alt satırda 0’a kadar azalacaktır. 0’dan küçük olması ile cümlenin bittiği anlamına gelen \0 ifadesi konacaktır
{
if(pos<0) return ‘\0’;//pos değeri alt satırda 0’a kadar azalacaktır. 0’dan küçük olması ile cümlenin bittiği anlamına gelen \0 ifadesi konacaktır
return stack[pos–];//stack dizisinin son pos değerinden itibaren geri dönerek tersden yazılmasını sağlar.
}
int empty()//pos un sayısı 0dan küçük olması halinde tersden yazma işlemi bitmiş demektir. pos<0 ise true değilse false döndürür
{
return pos<0;
}
int main(int argc, char *argv[])
{
  char c;//char tipinde c adında değişken oluşturuldu.
printf(“Bir cumle giriniz: “);
for(;;)//sonsuz döngüye girilerek kullanıcı entera basana kadar(\n ifadesi okunana kadar) karakterleri alıp push() fonksyionu ile diziye kaydeder
{
if((c=getchar())==‘\n’) break;//kullanıcın klavyeden girdiği değeri( getchar() ) c değişkenine ata ve karakterler bittiğinde( \n ifadesi konur ) çıkış yap döngüden
printf(“%c”,c);//karakteri ekrana yazdır.
push(c);//c değişkenine atanan karakter bu metot ile bir dizide saklanır. son değişken diziye sığmaz ise LIFO mantığı gereği son giren ilk çıkar.
}
printf(“\nGirilen cumle: “);
while(!empty())//dizin boş olmadığı sürece(bu pos değişkeni ile kontrol edilmektedir.)
printf(“%c”, pop());//pop() metoduna giderek dizide sondan ilk indise doğru harfleri tersden yazdırır.
printf(“\n”);
  system(“PAUSE”);
  return 0;
}


Java Developer

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2021 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları