C Stack bir değişkenin işlevi

Mr-Fakoo

Hectopat
Katılım
11 Mayıs 2019
Mesajlar
167
Çözümler
4
C:
#include<stdio.h>
#include<process.h>
#include<stdlib.h>

#define MAX 5    //Maximum number of elements that can be stored

int top=-1,stack[MAX];
void push();
void pop();
void display();

main()
{
    int ch;
   
    while(1)    //infinite loop, will end when choice will be 4
    {
        printf("\n*** Stack Menu ***");
        printf("\n\n1.Push\n2.Pop\n3.Display\n4.Exit");
        printf("\n\nEnter your choice(1-4):");
        scanf("%d",&ch);
       
        switch(ch)
        {
            case 1: push();
                    break;
            case 2: pop();
                    break;
            case 3: display();
                    break;
            case 4: exit(0);
           
            default: printf("\nWrong Choice!!");
        }
    }
}

void push()
{
    int val;
   
    if(top==MAX-1)
    {
        printf("\nStack is full!!");
    }
    else
    {
        printf("\nEnter element to push:");
        scanf("%d",&val);
        top=top+1;
        stack[top]=val;
    }
}

void pop()
{
    if(top==-1)
    {
        printf("\nStack is empty!!");
    }
    else
    {
        printf("\nDeleted element is %d",stack[top]);
        top=top-1;
    }
}

void display()
{
    int i;
   
    if(top==-1)
    {
        printf("\nStack is empty!!");
    }
    else
    {
        printf("\nStack is...\n");
        for(i=top;i>=0;--i)
            printf("%d\n",stack[i]);
    }
}
int top=-1 değerinin anlamı nedir ? bulamadımda
 
int integer yani tam sayı demektir, değişkenin depolanma türüdür ve 4 byte tutar.
top ise değişkenin identifier'ı yani ismi gibi düşünün.
= değer atama anlamına gelir yani değeri int olarak depolanıp top olarak adlandırılan -1 sayısı anlamına geliyor.
 
Onları biliyorum ama bu kod için işlevini çözemedim
if(top==MAX-1) mesela bu burda ifi neyle şartlıyoruz biz
Önce matematik işlemini yapacak sonra karşılaştırma yapacak. Örnek olarak MAX'ın değeri 1000 ise, if'in içinin 999'a eşit olup olmadığı sorgulanacak.

Düzenleme: Kod içinde MAX değişkenine 5 atandığı için if 4'e eşit olup olmadığını sorgulayacak.
 
Şimdi stack mantığını düşündüğün zaman stacke bir şeyler pushladıkça üst üste diziliyorlar. Sen her push fonksiyonunu kullandığında top değerin pushladığın sayı olacak. Eğer top sayısı -1 olursa ki bu -1 değil de herhangi -li bir sayı yapabilirsin (-999 v.b. ama genelde -1 kullanılır.). Stackin boş olduğu anlamına gelir. Yani stacke pushladığın tüm sayıları poplamışsındır, veya stacke hiç sayı pushlamamışsındır.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı