[求助]四连通种子填充算法
请各位大虾帮帮忙啊~用非递归算法编写一道四连通种子填充算法的程序!我自己写的程序如下:
#include<conio.h>
#include<graphics.h>
#define len sizeof(zhan)
typedef struct
{
int x;
int y;
int *next;
}zhan;
void seedfill(int x0,int y0,int color)
{ int color1,n,x1=x0,y1=y0;
zhan *p,*head;
putpixel(x0,y0,color);
do{
n=0;
color1=getpixel(x1+1,y1);
if(color1!=15&&color1!=color)
{p=(zhan*)malloc(len);
if(head==0)
{head=p;p->next=0;p->x=x1+1;p->y=y1;}
else {p->next=head;head=p;p->x=x1+1;p->y=y1;}}
color1=getpixel(x1,y1-1);
if(color1!=15&&color1!=color)
{p=(zhan*)malloc(len);
p->next=head;head=p;p->x=x1;p->y=y1-1;}
color1=getpixel(x1-1,y1);
if(color1!=15&&color1!=color)
{p=(zhan*)malloc(len);
p->next=head;head=p;p->x=x1-1;p->y=y1;}
color1=getpixel(x1,y1+1);
if(color1!=15&&color1!=color)
{p=(zhan*)malloc(len);
p->next=head;head=p;p->x=x1;p->y=y1+1;}
while(n==0)
{ color1=getpixel(head->x,head->y);
if(color1!=15&&color1!=color)
{ putpixel(head->x,head->y,color);
x1=head->x;y1=head->y;n=1;p=head;free(p);head=head->next;}
else {p=head;free(p);head=head->next;}}
}while(head!=0);
}
main()
{ int a,b,color,points[12];
int driver,mode;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"C:\Win-TC.include");
setbkcolor(0);setcolor(15);
a=260;b=140;color=4;
points[0]=300;points[1]=100;
points[2]=400;points[3]=130;
points[4]=320;points[5]=200;
points[6]=200;points[7]=170;
points[8]=250;points[9]=120;
points[10]=300;points[11]=100;
drawpoly(6,points);
seedfill(a,b,color);
getch();
closegraph();
}
但运行之后图形填不满~请各位帮忙呀!
[此贴子已经被作者于2007-11-9 13:03:24编辑过]