YIĞIN (STACK) VERİ YAPISI (PUSH POP)

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İ

 

Mehmet Salih Deveci

I am Founder of IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience. I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource. I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks. I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients. If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress mehmetsalih.deveci@outlook.com. -                                                                                                                                                                                                                                                 - Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  mehmetsalih.deveci@outlook.com a mail atabilirsiniz.

9 thoughts on “YIĞIN (STACK) VERİ YAPISI (PUSH POP)

  • November 8, 2010 at 2:45 am
    Permalink

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

    Reply
    • November 8, 2010 at 4:51 am
      Permalink

      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….

      Reply
  • July 25, 2011 at 1:56 pm
    Permalink

    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

    Reply
    • July 25, 2011 at 3:09 pm
      Permalink

      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…

      Reply
      • June 14, 2014 at 11:51 am
        Permalink

        merhabalar hocam bi sorum olacak bi struct oluşturdum ben içindeki değerleri yazdım ama klavyeden girilen değer kadar aynı struct tan oluşturmam lazım nasıl yapabilirim acaba ?
        teşekkürler

        Reply
  • July 26, 2011 at 5:23 pm
    Permalink

    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 …

    Reply
  • October 20, 2012 at 5:22 pm
    Permalink

    Bağlantılı liste kullanılarak yapılan yığının her bir düğümünde öğrencinin numarası, adı, soyadı ve bölümü bilgileri tutulacaktır. c ++ dilinde ve class sınıfı kullanarak nasıl yapacagız bana yardımcı olabılırmısınız yapamadım bı turlu

    Reply
  • April 2, 2013 at 1:06 am
    Permalink

    hocam bunun C ile yapılmışı yok mu

    Reply
  • June 14, 2014 at 11:56 am
    Permalink

    for(int i=1;i<=a;i++)
    {
    struct notcizelgesi ogri;
    }

    struct tanımladıktan sonra şöyle birşey denedim ama hata veriyor

    Reply