Hello!a simple optimisation required!

Hello,

i wrote a program for filling polygon.First i did it with recursive calls. But recursive calls are too bad they fill the stack memory and my compiler crashed. So then i used stack now in stack also my work is done but the memory requirement is way too high. This is a flood fill algorithm. Can anybody optimize my solution i will be very grateful to that person. The code is .

Code:

`#include <stdio.h>`

#include <graphics.h>

#include <stdlib.h>

struct points

{

int x;

int y;

};

struct stack

{

int dataX[10000];

int dataY[10000];

int top;

};

void push(struct stack *s,int m,int n)

{

s->top++;

s->dataX[s->top]=m;

s->dataY[s->top]=n;

}

struct points pop(struct stack *s)

{

struct points t;

t.x=s->dataX[s->top];

t.y=s->dataY[s->top];

s->top--;

return t;

}

int main(void)

{

int gd=DETECT,gm,errorcode;

int n=4,i;

struct points w[10],t;

int x=105,y=105;

struct stack s;

s.top=-1;

initgraph(&gd,&gm,"c:\\tc\\bgi");

errorcode=graphresult();

if(errorcode!=grOk)

{

printf("%s",grapherrormsg(errorcode));

exit(1);

}

w[0].x=100; // assigning to draw square

w[0].y=100;

w[1].x=200;

w[1].y=100;

w[2].x=200;

w[2].y=200;

w[3].x=100;

w[3].y=200;

for(i=0;i<=n-2;i++) //drawing square

line(w[i].x,w[i].y,w[i+1].x,w[i+1].y);

line(w[0].x,w[0].y,w[n-1].x,w[n-1].y);

push(&s,x,y);

while(s.top!=-1) //code for flood fill

{

putpixel(x,y,14);

if(getpixel(x,y+1)==0)

push(&s,x,y+1);

if(getpixel(x,y-1)==0)

push(&s,x,y-1);

if(getpixel(x+1,y)==0)

push(&s,x+1,y);

if(getpixel(x-1,y)==0)

push(&s,x-1,y);

delay(3);

t=pop(&s);

x=t.x;

y=t.y;

}

return 0;

}