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İ

 

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and 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 [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

9 comments

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

    • 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. 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İ

      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…

      • 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

  3. denis kadirov basriev

    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 …

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

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *