Yığın (Stack)

Eleman ekleme çıkarmaların en üstten (top) yapıldığı veri

yapısına yığın (stack) adı verilir. Bir eleman ekleneceğinde

yığının en üstüne konulur. Bir eleman çıkarılacağı zaman

yığının en üstündeki eleman çıkarılır. Bu eleman da yığındaki

elemanlar içindeki en son eklenen elemandır. Bu nedenle

yığınlara LIFO (Last In First Out : Son giren ilk çıkar) listesi

de denilir. C#’ta Yığın yapısı hazır olarak vardır :

(Koleksiyon sınıflarından) Stack sınıfının bazı metotları

  • Push : Yığına (sonuna) eleman ekleyen metot.
  • Pop : Yığıntan (sonundan) eleman silen metot.
  • Eleman ekleme çıkarmaların en üstten (top) yapıldığı veri yapısına yığın (stack) adı verilir.
  • Bir eleman ekleneceğinde yığının en üstüne konulur.
  • Bir eleman çıkarılacağı zaman yığının en üstündeki eleman çıkarılır.
  • Bu eleman da yığıntaki elemanlar içindeki en son eklenen elemandır.
  • Bu nedenle yığınlara LIFO (Last In First Out : Son giren ilk çıkar) listesi de denilir.Yığın Gösterimi
  • (Tanım) Boş yığın (empty stack) : Elemanı olmayan yığın.
  • push (yığına eleman ekleme) : “push(s,i)”, s yığınının en üstüne i değerini eleman olarak ekler.
  • pop (yığıntan eleman çıkarma) : “i = pop(s)”, s yığınının en üstündeki elemanı çıkartır ve değerini i değişkenine atar.
  • empty (yığının boş olup olmadığını belirleyen işlem) : empty(s), yığın boş ise TRUE değerini, değilse FALSE değerini döndürür.
  • stacktop (yığıntan çıkarılmaksızın en üstteki elemanın değerini döndüren işlem, diğer adı peek)
Örnek:
#include “stdafx.h”
#include <iostream>
using namespace std;

#define MAXSIZE 5
//typedef int tam;
struct ornek
{
int dizi[MAXSIZE];// yıgın
int top;          // yıgın indis değişkeni
};
typedef struct ornek orn;
void initStack(orn *p);
void push (orn *p, int yeni_deger);
int pop(orn *p);
int isEmpty(orn *p);
int top(orn ust);
int main()
{
orn a;
int k,i;
initStack(&a);
push(&a,17);
push(&a, 29);
push(&a, 37);
push(&a,49);
for(i=0; i<5; i++)
{
k = pop(&a);
cout << “cıkartılan deger :” << k << endl;
}
for(i=0; i<9; i++)
{
push(&a,i);

}
cin.get();
}

void initStack(orn *p)
{
p->top = -1;
}

void push(orn *p, int yeni_deger)
{
if (isEmpty(p))
{
p->top = p->top + 1;
p->dizi[p->top]= yeni_deger;
}
else cout << “stack dolu\n”;

}

int isEmpty(orn *p)
{
if(p ->top == MAXSIZE)return 0;
return 1;
}

int pop(orn *p)
{
int k;
if (p->top != -1)
{
k = p->dizi[p->top];
(p->top)–;
}
else cout << “stack boş\n”;
return k;
}

int top(orn ust)
{
return ust.dizi[ust.top];
}
/*
int top(orn *ust)
{
return ust->dizi[ust->top];
}  */

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s