Я в настоящее время создает редкую программу матрицы, которая использует SparseMatrixNode:Java разреженных матриц Создание
public SparseMatrixNode(int row, int col, int value, SparseMatrixNode down, SparseMatrixNode across)
{
this.row = row;
this.col = col;
this.value = value;
this.down = down;
this.across = across;
}
Моя программа создает шаблон разреженную матрицу следующим образом:
public SparseMatrix()
{
noofrows=noofcols=0;
// create the top-left entry point cell
root=new SparseMatrixNode(0, 0, 0, new SparseMatrixNode(0, 0, 0, null, null), new SparseMatrixNode(0, 0, 0, null, null));
}
public void Create(int noofrows, int noofcols)
{
this.noofrows=noofrows;
this.noofcols=noofcols;
root=new SparseMatrixNode(0, 0, 0, new SparseMatrixNode(noofrows+1, 0, 0, null, null), new SparseMatrixNode(0, noofcols+1, 0, null, null));
}
И это мой SetValue функция, которая принимает три целых значения, заданные либо для замены текущего значения, либо для создания нового узла и вставки его в разреженную матрицу.
public void SetValue(int row, int col, int value)
{
if (value == 0)
{
return;
}
else
{
SparseMatrixNode checkNode = FindNode(row, col);
if (checkNode.value != 0)
{
checkNode.setValue(value);
}
//SparseMatrixNode dummyRow = root.FindRow(row);
if (root.down.row == 5)
{
root.down = new SparseMatrixNode(row, 0, 0, null, new SparseMatrixNode(row, col, value, null, null));
root.across = new SparseMatrixNode(0, col, 0, new SparseMatrixNode(row, col, value, null, null), null);
}
}
Однако, когда я проверить мой код, основанный на сетке 4х4 и вызова SetValue (1, 2, 5), он просто выводит сетку из 0-х. Я пытался выполнить мой код и узнать, почему он не вводит новый узел, но я застрял в течение нескольких часов и задавался вопросом, может ли кто-нибудь осветить ситуацию?
Итак, мой вопрос: почему моя функция SetValue не создает новый узел и связывает его со свойствами «манекена» в целом и вниз (строка 0 столбец 0)?