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İ
2,204 views last month, 2 views today
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….
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
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
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 …
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
hocam bunun C ile yapılmışı yok mu
for(int i=1;i<=a;i++)
{
struct notcizelgesi ogri;
}
struct tanımladıktan sonra şöyle birşey denedim ama hata veriyor