带迭代的洪水填充算法

Flood Fill Algorithm with iteration

我一直在做我的家庭作业,我需要用 c 语言编写的泛洪填充算法,但是不允许递归、结构和任何库(stdio.h 除外),我只能使用迭代。我已经为此工作了 3 天,但我做不到,我需要帮助

oldTeam(global variable) is target color

newTeam(global var.) is replacement color

x and y(both global) are row and colomn of the starting point of flood fill

pX and pY are variables to store initial coordinates of starting point

函数hasNeighbor(x,y)是搜索是否有目标颜色:

 int hasNeighbor(int x,int y)
{
    if(table[x+1][y]==oldTeam || table[x+1][y+1]==oldTeam || table[x+1][y-1]==oldTeam || table[x][y+1]==oldTeam || table[x][y-1]==oldTeam || table[x-1][y]==oldTeam || table[x-1][y-1]==oldTeam || table[x-1][y+1]==oldTeam)
        return 1;
    else
        return 0;

    }

我的代码或算法哪里出错了

(在问这个问题之前,我一直在这个网站上搜索这个主题 google 但我找到的解决方案包含递归、结构或不允许的库)

谢谢..

遍历数组中的所有元素。根据邻居确定哪些需要更改并进行更改。跟踪您是否有任何更改,如果有任何更改,请再次执行。

bool anyChange; 
do { 
    anyChange = false; 
    ... change what needs changing
} while (anyChange);

在极端情况下不是特别有效,但简单且有效。