I am studying data structure, and one of the challenges is the following:

Create an algorithm that will paint a heart in the form of data in a matrix.

Follow the code

tail pack;

public class Fila {

private int vet[];

private int start, end, amount;

```
Public Row (int size)
{
vet = new int[tamanho];
start = end = amount = 0;
}
public void in queue (int x)
{
vet[fim] = x;
++ order;
count ++;
if (final == vet.length)
end = 0;
}
public int parade ()
{
int int = vet[inicio];
starting ++;
quantidade--;
if (start == vet.length)
start = 0;
return resp.
}
public boolean empty ()
{
(amount == 0)
return true;
other
return false;
}
public boolean full ()
{
if (quantity == vet.length)
return true;
other
return false;
}
```

}

tail pack;

public class FilaTest {

```
public static void main (String args[])
{
int mat[][]= {{{}}
0,0,1,1,1,1,0,0,1,1,1,1,0,0 {},
0.1,0,0,0,0,1,1,0,0,0,0,1,0 {},
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1 {},
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1 {},
0.1,0,0,0,0,0,0,0,0,0,0,0,1,0 {},
0,0,1,0,0,0,0,0,0,0,0,0,1,0,0 {},
0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 {},
0,0,0,0,1,0,0,0,0,1,1,0,0,0,0 {},
0,0,0,0,0,1,0,0,1,0,0,0,0,0 {},
0,0,0,0,0,0,1,1,0,0,0,0,0,0 {},
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 {}};
show Matrix (mat);
int x = 1, y = 2; // painting start point
System.out.println ("Initial coordinates: x =" + x + ", y =" + y + " n n");
Row f = new Row (1000);
f.file (x);
f.find (y);
while (! f.vazia ())
{
f.desenfileirar x = ();
f.desenfileirar y = ();
yes (mat[x][y] == 0) // can you paint?
{
mat[x][y] = 2; // painted
((x + 1) <mat.length && mat.[x+1][y] == 0) // below
{
f.file (x + 1);
f.enfilerar (and ++);
}
}
yes (mat[x][y] == 0) // can you paint?
{
mat[x][y] = 2; // painted
if ((x-1) <mat.length && mat[x-1][y] == 0) // below
{
f.enfilerar (x-1);
f.find (y);
}
}
yes (mat[x][y] == 0) // can you paint?
{
mat[x][y] = 2; // painted
if ((y + 1) <mat.length && mat.[x][y+1] == 0) // below
{
f.file (x);
f.file (y + 1);
}
}
yes (mat[x][y] == 0) // can you paint?
{
mat[x][y] = 2; // painted
if ((y-1) <mat.length && mat[x][y-1] == 0) // below
{
f.file (x);
f.enfilerar (y-1);
}
}
}
show Matrix (mat);
}
private static void show Matrix (int[][] mat.](int i = 0; i <mat.length; i ++) {}
(int j = 0; j <mat.[0].length; j ++)
System.out.print (mat[i][j] + "");
System.out.println ();
}
}
```

}

I have two classes, one that fills and parades, and one that manipulates the data. In the current code, the representation comes out like this:

The intention is to paint by inserting a number 2, where it has the 0. and 1 is the edge, the limit where it should be painted to form the drawing