28 Aralık 2012 Cuma

YIĞIN ( STACK ) C++

       Veri  yapılarının  önemli  kısımalarından  biri de yığın yapısıdır. Yığın  yani stack yapısı  bircok programlama  mantığında  kullanılmaktadır.  Çalışma şekli  gayet  basittir LİFO  ( Last İn First Out ) mantığına  gore  çalışır  yani  son  giren   eleman  ilk önce  kullanılır. Farklı bir şekilde  ifade  edicek  olursakta  kova  mantığını  kullanabiliriz  yani  kovaya  verilerimizi  attığımızı  düşünelm  verileri  alırkende en  son atılan  ilk  önce alınıcaktır.  Programlama  mantığında  ise  bu  işlemler  push ( eleman itme ) pop ( elemen çekme ) diye  belirtilen iki komutla gerçekleşir.
            Bu konu hakkında bir c++ kodu ile bilgi vermek gerekirse, boyutunu kendimin belirlediği ve integer eleman eklenip silindiği basit yapılı bir programla örnek vermek istedim .
Eklemek , saymak, getirmek, listelemek ve çıkmak komutlarının bulunduğu programın çalışma prensibini şekil üzerinde göstericeğm .




1.      durumda  elemnların eklendiğini görüyoruz. 2.   durumda  ise yığın mantığı gereği
eleman slime işleminde en üstteki elemanı alıyoruz. 3.  durumda  ise tekrardan eleman silindiğinde yine en üstteki elemanın silindiğini görüyoruz.

Program çıktısi ise şu şekildedir :





Programın kodları :  


#include<iostream>

using namespace std ;


class yigin {

private:
       int rear;
       int data;
       int *dizi;
       int size;

public:
       yigin(int);
       void ekle(int);
       int say();
       void listele();
       void getir();

};


yigin::yigin(int boy)
{
       rear=0;
       size=boy;
       dizi = new int [boy];
}

void yigin::ekle(int x)
{
       if(rear==size)
              cout<<"yiginda yeterli alan yoktur..."<<endl;
       else
       {
       dizi[rear]=x;
       rear=rear+1;
      
       }
}

int yigin::say()
{
       return rear  ;
}

void yigin::getir()
{
       if(rear== 0)
              cout<<"yiginda eleman yoktur.."<<endl;
       else
       {
              cout<<"ilk elemen :"<<dizi[rear-1]<<endl;
              rear=rear-1;
       }
}

void yigin::listele()
{
       if(rear==0)
              cout<<"yigin bos ..."<<endl;
       else
       {int i;
              for(i=0;i<rear;i++)
                     cout<<i+1<<". eleman : "<<dizi[i]<<endl;
       }
}

int main (){
      
       char y;
       int x,a;
       cout<<"kuyrugun boyutunu giriniz: "<<endl;
       cin>>x;
       yigin anil(x);
      

       while(1){
              cout<<"Eklemek    --> E"<<endl<< "Saymak     --> S "<<endl<< "Getirmek   --> G"<<endl<<"Listelemek --> L"<<endl<<"cikmak     --> C"<<endl;
              cin>>y;
              if(y=='C')break;
       switch ( y ){

       case 'E':
              { cout<<"eklemek istediginiz sayiyi giriniz:";
              cin>>a;
              anil.ekle(a);}break;

       case'S': cout<<"kuyrugun boyu --> "<<anil.say()<<endl; break;

       case'G': anil.getir(); break;

       case'L': anil.listele(); break;
             

       default: cout<<"yanlis bir harf girdiniz."; break;
      
       }

       }

       system("PAUSE");
       return 0;

}


Bu şekildedir. Iyi çalışmalar J


Hiç yorum yok:

Yorum Gönder