Meşhur Stack(Yığın) nedir? Stack Last In First Out mantığıyla çalışan ve bellek üzerinde kurulan bir mekanizmadır.Yığın olarak adlandırılmasının sebebi gerçek dünyadaki yığınlar gibi davranır mesela kitapların üst üste eklendiğini düşünün burda da en son bıraktığınız kitabı ilk alırsınız.Static yığın da biz dizileri kullanarak yığınımızı tasarlayacağız ve stack üzerinde de 3 tane işlemimizi kullanacağız ;
1)push() : Yığına eleman eklemek için kullanılır yığın dolu ise overflow hatası verir.;
2)pop() : Yığından eleman çıkarmak için kullanılır yığın boş ise underflow hatası verir.;
3)top() : En üstteki elemanı gösterir.
Son olarak da display ile de stackde ki elemanlarımızı yazdıracağız.Aşağıda kodların her birinin üstünde o kodun ne iş yaptığını yorum olarak belirttim umarım anlaşılır olmuştur.
#include<stdio.h>
#include<stdlib.h>#define NUMBER 5
// Stack yapımızı oluşturuyoruz...
struct Stack{
unsigned int index;
// stack de static yapı için dizi kullandık
int array[NUMBER];
};struct Stack s1;
// eleman eklemek için kullandığımız function
void push(int data){
// eğer ki stack yapısındaki index değerimiz sona geldiyse stack doludur
if(s1.index == NUMBER-1){
printf("Stack dolu!!\n");
}
// eğer ki stack dolu değilse eklememizi yap ve index değerimizi bir arttır.
else{
s1.index++;
s1.array[s1.index]=data;
}
}void pop(){
// eğer ki stack boş ise
if(s1.index == -1){
printf("Stack bos!!\n");
}
// boş değilse gir ve sondaki index değerini bir azaltıp değeri çıkart
else{
s1.index--;
}
}
// Stack içerisindeki elemanları gösteren fonksiyon
void display(){
if(s1.index!=-1){
printf("\n*************************\n");
for(int i = s1.index;i>=0;i--){
printf("%d\t",s1.array[i]);
}
printf("\n*************************\n");
}
}// en üstteki elemanı gösteren fonksiyon
void top(){
printf("\nTop element : %d\n",s1.array[s1.index]);
}int main(){
int choice,data;
s1.index=-1;
while(1){
printf("1)Eleman Ekle\n");
printf("2)Eleman Cikar\n");
printf("3)En üstteki eleman\n");
printf("Secim : ");
scanf("%d",&choice);
switch(choice){
case 1:
printf("Data : ");
scanf("%d",&data);
push(data);
display();
break;
case 2:
pop();
display();
break;
case 3:
top();
break;
}
}
}