Membuat Stack Menggunakan bahasa C

Stack atau tumpukan merupakan sebuah metode yang di gunakan untuk menimbun suatu nilai. stack menggunakan Last In First Out (LIFO). konsep ini melakukan penyimpanan dengan data yang pertama masuk akan keluar terakhir dan data yang terakhir masuk akan keluar pertama. ada dua istilah dalam stack yaitu push dan pop . push yaitu melakukan penyimpanan nilai sedangkan pop yaitu melakukan pengambilan nilai dari penyimpanan.


contoh ilustrasi push
kotak merupakan ibarat dari nilai kemudian ada garis merah sebagai tempat penyimpanannya

contoh ilustrasi pop

pada pop nilai yang berada pada tumpukan paling atas di keluarkan dan berhenti sampai tidak ada nilai pada tumpukan

berikut contoh sources code stack dalam bahasa c

#include "stdio.h";

#include "ctype.h";

#include "stdlib.h"

#define SIZE 40

int stack[SIZE];

int top=-1;

int pop();

void push(int);

int evaluate(int , int o,char );



void push(int n)

{

    if(top == SIZE-1)

    {

        printf("Stack is full\n");

        return;

    }

    else

    {

        top=top+1;

        stack[top]=n;

        printf("Pushed element is %d\n",n);

    }

}



int pop()

{

    int n;

    if(top == -1)

    {

        printf("Stack is empty\n");

        return;

    }

    else

    {

        n=stack[top];

        top=top-1;

        printf("The poped element is %d\n",n);

        return(n);

    }

}



int evaluate(int op1, int op2,char ch)

{

    printf("op1=%d op2=%d ch=%c\n",op1,op2,ch);

    int n;

    if (op1 < op2)

    {

        n=op1;

        op1=op2;

        op2=n;

        }

    if(ch=='+')

        n=op1+op2;

    else if(ch=='-')

        n=op1-op2;

    else if(ch=='*')

        n=op1*op2;

    else if(ch=='/')

        n=op1/op2;

    else if(ch=='%')

        n=op1%op2;

    else

    {

        printf("The operator is not identified\n");

        exit(0);

    }

    printf("n=%d\n",n);

    return(n);

}



int main()

{

      char str[50],ch,ch1;

      int i=0,n,op1,op2;



      printf("Enter the Postfix string\n");

      scanf("%s",str);

      ch=str[i];

      while(ch!='\0')

      {

        printf("%c",ch);

           if(ch=='1' || ch=='2' || ch=='3' || ch=='4' || ch=='5')//

           if(isdigit(ch))

           {

                n=ch-'0';

                push(n);

           }

           else

           {

                op1=pop();

                op2=pop();

                n=evaluate(op1,op2,ch);

                push(n);

           }

           ch=str[++i];

      }

      printf("%d\n",pop());

      return;

}

Posting Komentar