hi friends,

i have a problem in implementing a stack data structure.

this is a simple array + struc implementation
i would be greatful if anyone could give me guidance

actually if i am push some elements into the stack
then displaying it ,
my delete function does not work, because the subscript is decremented in display
fun
to 0. so the stack throws up a message stack is empty.

if i am not going to my display function after pushing in elements to the stack
then the prog work okay (becuse top subscript is not decremented to zero)

i would be greatful if anyone could point out my mistakes
both

for logical
and efficiency

thanks a lot

for the help

Code:

include<stdio.h>
#define stacksize 15

void delete();
void push();                /* function prototype */
void display();
struct stack                /* creating a stack */
{
    int top;                /* subscript for pointing to top of stack */
    int item[stacksize];    /* array to hold the data value */
    int n;                  /* no of item to be pushed into stack */
};
struct stack s;

int x;

void push()
{
        printf(" Enter  no of elements to be pushed\n ");
        scanf("%d",&s.n);

        do
        {

                printf("enter the data value to be inserted \n");    
		if (s.top >= stacksize)
                {
                    printf(" the stack is full ");
                }
                                        
                

		else
                {
                    s.top=s.top+1;
                    s.item[s.top] = x ;

                }
                s.n--;
        }while (s.n > 0);
}
void delete()
{
    if (s.top == 0)         /* check for empty condition */
        {
            printf(" the stack is empty \n");
        }
    else
        {
            x = s.item[s.top];
            s.top--;
        }

}                                  
void display()      /* function to display the elements of the stack */
{

        printf(" the elements of the stack are \n");
        while(s.top > 0)        /* until not equal to zero */
        {
            printf("%d\n ",s.item[s.top]);
            s.top--;
        }
}

int main()
{
        char c;
        int ch;
        do
        {
            printf("ENTER U'R CHOIC OF OPERATION \n");
            printf("1.PUSH      2.DISPLAY  3.DELETE \n ");
            scanf("%d",&ch);
            switch(ch)
            {
                case 1:
                                push();
                                break;

                case 2:
                                display();
                                break;

                case 3:
                                delete();
                                break;

            }
                 
          printf("Type 'y' to continue \n");
            scanf("%s",&c);
        } while (c=='y');
return 0;
}