Thursday, 11 July 2019

C program to find all leaders in array using stack

#include<stdio.h>

int stack[10000],choice,n,top,x,i;//global variables declared
void push(int x);    //push declaration
void pop(void);    //pop declaration

void push(int x)
{
    if(top>=9999)
    {
        printf("\n\tSTACK is over flow");
         
    }
    else
    {
        
        top++;
        stack[top]=x;
    }
}

void pop()
{
    if(top<=-1)
    {
        printf("\n\t Stack is under flow");
    }
    else
    {
        printf("\t %d",stack[top]);
        top--;
    }
}


int main()
{
int t,n,a[100000],i,j,k,max,b[100000];
scanf("%d",&t);//number of test cases
for(k=0;k<=t-1;k++)
{
    scanf("%d",&n);
    for(i=0;i<=n-1;i++)//array scan
    {
        scanf("%d",&a[i]);
    }
max=a[n-1];
push(a[n-1]);
for(i=n-2;i>=0;i--) //scanning entire array from right side to      find leader
{
    if(max<a[i])
    {
        max=a[i];
        push(max); //pushing element onto stack
    }
    
}
for(i=top-1;i>=0;i--)   //popping all the elements (leaders)
{
pop();
}

printf("\n");     

}
}

No comments:

Post a Comment