| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:[求助]四连通种子填充算法
只看楼主 加入收藏
kuteboy
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-8
收藏
 问题点数:0 回复次数:0 
[求助]四连通种子填充算法
请各位大虾帮帮忙啊~用非递归算法编写一道四连通种子填充算法的程序!
我自己写的程序如下:
#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编辑过]

搜索更多相关主题的帖子: 算法 种子 连通 
2007-11-09 12:37
快速回复:[求助]四连通种子填充算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved