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


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

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