Stack yapısı üzerinde uygulanan işlemleri aşağıdaki resim üzerinde inceleyelim.
LIFO prensibine uygun olarak ekleme, çıkarma işlemlerinin yapılmış olduğu görülüyor. Yığın yapısına ilk eklenen eleman 1, daha sonra eklenen eleman ise 2. Elemanları çıkartmak istersek ilk çıkan eleman 2 olacaktır, en son çıkan eleman ise 1 elemanıdır.
Stack veri yapısında genel olarak kullanılan beş tane temel fonksiyon vardır:
- StackOlustur: Boş elemanlı stack oluşturur.
- ekle(push): Yığına eleman ekler.
- cikar(pop): Yığından eleman çıkarır.
- BosMu: Yığın eğer boş ise kontrol et.
- DoluMu: Yığın eğer dolu ise kontrol et.
- StackListele: Yığın elemanlarını listele.
C++ dili yazılan stack yapısının program kodu:
#include <iostream>
#define BOYUT 100
using namespace std;
class Stack{
private:
int BAS;
int elemanlar[BOYUT];
public:
Stack(){}
~Stack(){}
void stackOlustur(){
this->BAS = -1;
}
int bosMu(){
if(this->BAS == -1)
return 1;
else
return 0;
}
int doluMu(){
if(this->BAS == BOYUT-1)
return 1;
else
return 0;
}
void ekle(){
int yeniEleman;
cout << "Yeni eleman ekle: ";
cin >> yeniEleman;
if(doluMu()){
cout << "Stack dolu, eleman eklenemez!" << endl;
}
else{
this->BAS++;
this->elemanlar[this->BAS] = yeniEleman;
}
}
void cikar(){
if(bosMu()){
cout << "Stack bos, eleman cikarilamaz!" << endl;
}
else{
cout << this->elemanlar[this->BAS] << " elemani silindi!";
this->BAS--;
}
cout << endl;
}
void stackListele(){
if(bosMu()){
cout << "Stack bos!" << endl;
}else{
for(int i=0; i<=this->BAS; i++){
cout << elemanlar[i];
if(i<this->BAS)
cout << "-";
}
cout << endl;
}
}
};
int main(){
Stack *yigin = new Stack();
yigin->stackOlustur();
yigin->ekle();
yigin->ekle();
yigin->ekle();
yigin->stackListele();
yigin->cikar();
yigin->stackListele();
yigin->cikar();
yigin->cikar();
yigin->cikar();
yigin->stackListele();
delete yigin;
}
Hiç yorum yok:
Yorum Gönderme