Spiral traversal of matrix in java

Java program for Spiral traversal of matrix. Here problem description and other solutions.
// Java program for
// Spiral form of matrix
public class SpiralView
{
public void spiral(int[][] data, int startRow,
int startCol, int endRow, int endCol, int element)
{
// Left to right
for (int i = startCol; i <= endCol && element > 0; ++i)
{
element--;
System.out.print(" " + data[startRow][i]);
}
// Top to down
for (int i = startRow + 1; i <= endRow && element > 0; ++i)
{
element--;
System.out.print(" " + data[i][endCol]);
}
// Bottom right to bottom-left
for (int i = endCol - 1; i >= startCol && element > 0; --i)
{
element--;
System.out.print(" " + data[endRow][i]);
}
// Bottom left to top
for (int i = endRow - 1; i > startRow && element > 0; --i)
{
element--;
System.out.print(" " + data[i][startRow]);
}
if (startRow + 1 <= endRow - 1 && element > 0)
{
// Recursive call
spiral(data, startRow + 1,
startCol + 1, endRow - 1, endCol - 1, element);
}
}
public static void main(String[] args)
{
SpiralView task = new SpiralView();
// Given matrix
int [][]matrix ={
{1 , 2 , 3 , 4 , 5 , 6} ,
{22 , 23 , 24 , 25 , 26 , 7} ,
{21 , 36 , 37 , 38 , 27 , 8} ,
{20 , 35 , 42 , 39 , 28 , 9} ,
{19 , 34 , 41 , 40 , 29 , 10} ,
{18 , 33 , 32 , 31 , 30 , 11} ,
{17 , 16 , 15 , 14 , 13 , 12}
};
int row = matrix.length;
int col = matrix[0].length;
// Get the number of element
int element = row * col;
task.spiral(matrix, 0, 0, row - 1, col - 1, element);
}
}
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment