閱讀以下說明和算法,完善算法并回答問題,將解答寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
假設(shè)以二維數(shù)組G[1. . m, 1. . n]表示一幅圖像各像素的顏色,則G[i, j]表示區(qū)域中點(i,j)處的顏色,顏色值為0到k的整數(shù)。
下面的算法將指定點(i0, j0)所在的同色鄰接區(qū)域的顏色置換為給定的顏色值。約定所有與點(i0, j0)同色的上、下、左、右可連通的點組成同色鄰接區(qū)域。
例如,一幅8*9像素的圖像如圖1-1所示。設(shè)用戶指定點(3,5),其顏色值為0,此時其上方(2,5)、下方(4,5)、右方(3,6)鄰接點的顏色值都為0,因此這些點屬于點(3,5)所在的同色鄰接區(qū)域,再從上、下、左、右四個方向進(jìn)行擴展,可得出該同色鄰接區(qū)域的其他點(見圖1-1中的陰影部分)。將上述同色區(qū)域的顏色替換為顏色值7所得的新圖像如圖1-2所示。
【算法】
輸入:矩陣G,點的坐標(biāo)(i0, j0),新顏色值newcolor。
輸出:點(i0, j0)所在同色鄰接區(qū)域的顏色置換為newcolor之后的矩陣G。
算法步驟(為規(guī)范算法,規(guī)定該算法只在第七步后結(jié)束):
第一步:若點(i0, j0,)的顏色值與新顏色值newcolor相同,則 (1) ;
第二步:點(i0, j0)的顏色值→oldcolor;創(chuàng)建棧S,并將點坐標(biāo)(i0,j0)入棧;
第三步:若 (2) ,則轉(zhuǎn)第七步;
第四步:棧頂元素出棧->(x, Y),并 (3) ;
第五步:1)若點(x, y-1)在圖像中且G[x, y-1]等于oldcolor,則(x, y-1)入棧S;
2)若點(x, y+1)在圖像中且G[x, y+1]等于oldcolor,則(x, Y+ I)入棧S;
3)若點(x-1, y)在圖像中且G[x-1, y]等于oldcolor,則(x-1, y)入棧S;
4)若點(x+1, y)在圖像中且G[x+l, y]等于oldcolor,則(x+1, y)入棧S;
第六步:轉(zhuǎn) (4) ;
第七步:算法結(jié)束。
【問題】
是否可以將算法中的棧換成隊列?回答: (5) 。