Veri yapılarının önemli konularından biriside YIĞIN (STACK) veri yapısıdır.Yığın veri yapısı üst üste koyulan tabaklar mantığıyla çalışır ilk çektiğimiz son koyduğumuz tabaktır aslında bundan da anlaşılacağı üzere Stack son giren ilk çıkar yani LIFO mantığıyla çalışır.Burda herbir eleman için bir Node (düğüm) oluşturarak Class yapısının içinde kullandım ve her elemanı önce ittim (PUSH) Yığına sonra da çektim (POP) çektim Stacktan.Şimdi Bunun gerçeklemesini görelim..

Görüldüğü üzere Stack a 19 tane eleman attık çektiğimizde ilk olarak en son koyduklarımız göründü.silerkende yine en son koyduklarımız silindi

#include<iostream>
 using namespace std;
class Node {
            public:
            Node();
      
            int data;
            Node *NEXT;
            };
           
    Node::Node()
    {
       this->data=0;                    
       this->NEXT=NULL;        
    }       
class Stack {
             public:
             Stack();
             void push(int);
             void pop();
             void print()const;
            
             private:
                     Node *top;
                     int counter;
             };
  Stack::Stack()
   {
      this->top=NULL;                        
      this->counter=0;
   }         
  
   void Stack::push(int A)
   {
      Node *p=new Node;      
      p->data=A;
               if(top==NULL)
                {
                    p->NEXT=top;                   
                    top=p;       
                }  
               else
               {
                   p->NEXT=top;  
                   top=p;
                  
               }                         
        counter++;
       
   }
  void Stack::pop()
   {
      Node *p;      
      p=top;
      top=top->NEXT;
     
      cout<<"SILINEN elemanlar:"<<p->data<<endl;
      delete p; 
      counter--; 
   }
  
   void Stack::print()const
   {
      Node *p=top;      
     
      while(p->NEXT!=NULL)
      {
            cout<<p->data<<"  ";                                 
            p=p->NEXT;            
      } 
        cout<<endl;
   }
  
   main()
   {
        Stack S;
        for(int i=0;i<20;i++)
        S.push(i);
        S.print();
       
        for(int j=0;j<10;j++)
        S.pop();
        S.print();
   system ("pause");     
   }

MEHMET SALİH DEVECİ

 

Reklamlar
yorum
  1. Arda dedi ki:

    Hocam 31 hata var 🙂 bari 4 – 5 hata olsa neyse… ben şimdi bu hataları bulmaya çalışcagıma oturup kendim yazsam daha guzel olur …

    • YAZILIM UZMANI dedi ki:

      Arda orda doğan tek hata bu platformda kullanmaya çalıştığım ” ” karakterinin yerine ” “ karakterlerinin kullanılmasıdır. sen bu programı kopyalarken sadece ve sadece ” bu karakterin yerine ” bu karakteri yine “ karakterinin yerinede ” bu karakteri kullanacaksın o zaman 0 hata olacaktır….

  2. denis dedi ki:

    merhaba hocam

    ben iyte bilgisayar mühendisliği 1. sınıf öğrencisiyim data structures dersi alıyorum başım biraz dertte struct’ in size’ını nasıl arttırabiirim bana yardımcı olurmusun bunu C++ kullnarak bir fonksiyonda yazmam gerekiyorum yardımcı olursan çok sevinirim

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Merhabaları Struct ın yapısını eğer dinamik olarak artırman gerekiyorsa dizi mantığıyla düşünebilirsin örneğin dizi yazarken int *p=new int[40]; dedin daha sonra bu size ı dinamik olarak artırman gerekşyorsa bir fonksiyona artıracak sayıyı tutan değişkeni parametre olarak ver ve gerçek boyutla onu toplayıp yeni artırımda bulunsun yani bu örnek gibi bakarsak şöyle olur.

      void artır(int count)
      {
      p=new int [eski boyut + count]; // Not burdaki p değişkeni global olmalı

      }

      yukarıdaki dizi örneğini struct ada uygulayabilirsin çünkü oda dizi gibidir…

  3. denis kadirov basriev dedi ki:

    Hocam çok teşekkür ederim fakat ben stack la struct’ı karıştırdım STACK ‘ in size ‘ini nasıl arttiracağımı sorcaktım kafam karışmış struct yazmısım stack yerine 🙂 seninde vaktini almak istemiyorum ama yine yardımcı olursan sevinirim 3 gündür araştırıyorum pek bişey bulamadım hocamız tahtaya birşeyler yazmıştı aynı şu şekilde :

    initilal condition :
    1. doubleSize (stack.ptr)
    2. anySize(stack.ptr , newSize)

    sanırım 1.de elimizdeki stack in size’ ini 2 katına çıkarıcaz
    2. de ise size’mız 10 iken 25 falan yapıcaz ben böyle anladım ama cumaya kadar programı c dilinde yazıp vermem gerekiyor yardımcı olursan çok sevinirim …

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s