Veri Yapıları Final Notları 2 – Char Stack Bellek

main.cpp
——————————————————————————————————————————————————————————————–
#include <stdio.h>
#include <stdlib.h>
#include “mycharstack.h”
int main(int argc, char *argv[])
{
char c;
printf(“Bir cumle giriniz: “);
for(;;)
{
if((c=getchar())==‘\n’) break;//kullanıcının girdiği metnin her karakteri getchar() fonksyionu ile c değişkenine atanır ve cümlenin sonuna(\n) geldiğinde döngüden çıkar.
printf(“%c”,c);//c ye alınan karkater ekrana yazdırıldı.
push(c);//her karakter push() metoduna yollandı.
}
printf(“\nsize()=%d, Girilen cumle: “,getsize());//getsize() fonksiyonu ile ekrana karkaterin uzunluğu girilecek.
while(!empty()) printf(“%c”, pop());//empty den false değeri dönerse pop() fonksiyonuna git ve dönen değeri ekrana yazdır.
printf(“\n”);
  system(“PAUSE”);
  return 0;
}
mycharstack.cpp
——————————————————————————————————————————————————————————————–

// My Char Stack Memory
#include <stdio.h>
#include <stdlib.h>
#include “mycharstack.h”

char *pstack=NULL;
int size=0;

void push(char c)//push() fonksiyonu ile her karakter bellekte belli bir yere kaydedilir
{
char *p=(char*)realloc(pstack,size+1);//her karakter geldiğinde pstack pointerının bellek uzunluğunu 1 arttıracak ve p pointerına atayacak
if(p==NULL) return;//p pointerı için bellekye yyer ayrılmamışsa çıkış yapılacak
pstack=p;//p pointerı ile pstack pointerının bellek adresleri birbirleiyle eşlenerek birinde yaptığın değişiklik diğerindede olacak
pstack[size++]=c;//pstack pointerının size’ncı bellek adresine c değişkeninde yer alan karakter yollanacak ve size 1 birim arttırılacak.
}

char pop()//pop() fonksiyonu ile pstack de saklanan değerler tersden yazdırılır
{
if(size==0) return ‘\0’;//size uzunluğu 0 eşit olduğu anda karakter sonu ifadesini koy
char c=pstack[–size];//c değişkenine pstackde ki sondan itibaren 1’er azaltarak harfleri yazdır
char *p=(char*)realloc(pstack,size);//pstack in uzunluğu size kadar olur ve p pointerına bildirilir
if(p==NULL) return c;//p pointerı boş ise c karakterini döndür
pstack=p;//pstack bellek ile p pointerını eşledi
return c;//c karakterini ekrana döndür
}

int getsize()//push() fonksyionu ile her karakterde size uzunluğu arttırılmış böylece karkater uzunluğunuda elde etmiş olduk.
{
return size;
}

int empty()//size ın uzunluğu 0 olduğu andan itibaren true değeri döndürür ve karakterin devamının olmadığını belirtir
{
return size==0;
}


Java Developer

Yazıyı Paylaş

Related Articles

Yorum Yaz

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