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


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ı