Okan Uzun
Okan Uzun Administrator of The Coders, J2EE, Spring Developer | Functional Programming Enthusiast

Yığıt Yapısı


Merhaba arkadaşlar.. Bugün size önemli veri yapılarından biri olan yığıt yapısı hakkında bilgi vereceğim.Bazı kaynaklarda yığın diye geçebilir.

Bilgisayar alanında en kullanışlı yapılardan biri yığıt veri yapısıdır. Yığıt veri yapısı programlamada çok önemli bir yere sahiptir.

Yığın yapısı temel olarak sondan erişimlidir. Yığın yapısına veriler her zaman sondan eklenir ve sondan çıkarılır. Yığın yapısında LIFO(Last In First Out) mantığı işlemektedir. Yani son giren eleman her zaman ilk çıkar.

Üniversitede veri yapıları dersi aldıysanız mutlaka bu konuya aşinasınızdır. Yığın yapısının nerelerde bahsetmek istiyorum. Yazılım uygulamalarında Undo(Geri Al) işlemleri yığıt veri yapısı sayesinde kolayca gerçeklenebilir. En son yaptığımız işlemi geri almamız tam olarak yığıt kullanımını anlatmaktadır. Tarayıcılarda Back butonu ile önceki sayfaya dönme işlemi yığıt veri yapısı ile yapılmaktadır. Yüksek seviyeli bir dilde yazılmış matematiksel ifadelerin makine kodunda işlenmesinde yığıt veri yapısı kullanılmaktadır.

Son olarak bir yığıt yapısına eleman eklemenin C/C++ kodunu paylaşacağım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
    
#define size 10
    
struct stack{
    int top=-1;
    int items[size];
};
    
void push(struct stack *,int);
void display(struct stack *);

int main(){
    struct stack s;
    struct stack *ps;
    ps = &s;
    int element;
    while(1){
        printf(" Enter element : ");
        scanf("%d",&element);
        if (element!=0)
            push(ps,element);
        else{
            display(ps);
            break;
        }
            
    }
    
    getchar();
    return 0;
}

void push(struct stack *ps,int x){
    if (ps->top == size-1){
        printf(" Stack Overflow!\n\n");
        display(ps);
        exit(1);
    }
    else
        ps->items[++(ps->top)]=x;
    
}

void display(struct stack *ps){
    printf("\nElements of Stack\n");
    for (int i=ps->top;i>=0;i--){
        printf("%d ",ps->items[i]);
    }
}

Not : .c uzantısı ile derlerken hata alırsanız .cpp uzantısını deneyin.

comments powered by Disqus