Maintaining TWO STACKS within a SINGLE ARRAY

/*****************************************************************
 *  Purpose : Maintaining TWO STACKS within a SINGLE ARRAY
 *  Author  : Nanda Kishor K N
 *  Mail Id : knnkishor@yahoo.com, nandakishorkn@rediffmail.com
 *  Website : www.c4swimmers.net ( WEB MASTER )
 *  Group   : c4swimmers@yahoogroups.com   ( GROUP OWNER )
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License as
 *  published by the Free Software Foundation; either version 2 of
 *  the License,or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *****************************************************************/

#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int stack[MAX],top1,top2;
void init()
{
	top1=-1;
	top2=10;
}
void Push1(int item)
{
	stack[++top1]=item;
}
void Push2(int item)
{
	stack[--top2]=item;
}
int Pop1()
{
	return stack[top1--];
}
int Pop2()
{
	return stack[top2++];
}
void Display()
{
	int i;
	if(top1==-1)
		printf("\nStack1 : Empty");
	else
	{
		printf("\nContent of Stack1 :\n");
		for(i=0;i<=top1;i++)
			printf("%d\t",stack[i]);
	}
	if(top2==10)
		printf("\nStack2 : Empty");
	else
	{
		printf("\nStack2 contains:\n");
		for(i=MAX-1;i>=top2;i--)
			printf("%d\t",stack[i]);
	}
}
int main()
{
	int item,ch;
	init();
	while(1)
	{
		printf("\n\n\tMenu\n1.Push1\n2.Push2\n3.Pop1\n4.Pop2\n5.Display\n6.Exit");
		printf("\nEnter your choice:");
		scanf("%d",&ch);
		switch(ch)
		{
			case 1 : if ((top1 + 1) < top2)
						{
							printf("\nEnter item to Push into Stack1:");
							scanf("%d",&item);
							Push1(item);
						}
						else
							printf("\nMemory is Full. Overflow Error");
						break;

			case 2 : if ((top2 - 1) > top1)
						{
							printf("\nEnter item to Push into Stack2:");
							scanf("%d",&item);
							Push2(item);
						}
						else
							printf("\nMemory is Full. Overflow Error");
						break;

			case 3 : if(top1 <= -1)
							printf("\nError : Underflow on pop1");
						else
							printf("\nPopped item from stack1 is : %d",Pop1());
						break;

			case 4 : if(top2 >= 10)
							printf("\nError : Underflow on pop2");
						else
							printf("\nPopped item from stack2 is : %d",Pop2());
						break;

			case 5 : Display();
						break;

			case 6 : exit(0);

			default: printf("\nInvalid Choice");
		}
	}
	return 0;
} /* End of Main */