public void Print() { ColumnHeadNode CurrentCHeadNode = StartColumnHeadNode; RowHeadNode CurrentRowHeadNode = StartRowHeadNode; int CurrentRows; int CurrentColumns; if (FixedNumColumns > 0 || FixedNumRows > 0) { CurrentRows = FixedNumRows; CurrentColumns = FixedNumColumns; } else { CurrentRows = 1; CurrentColumns = 1; while (CurrentRowHeadNode.NextInRow != StartRowHeadNode) { CurrentRows++; CurrentRowHeadNode = (RowHeadNode)CurrentRowHeadNode.NextInRow; } while (CurrentCHeadNode.NextInColumn != StartColumnHeadNode) { CurrentColumns++; CurrentCHeadNode = (ColumnHeadNode)CurrentCHeadNode.NextInColumn; } } ValueNode CurrentValueNode; for (int i = 1; i <= CurrentRows; i++) { CurrentRowHeadNode = this.GetRow(i); for (int j = 1; j <= CurrentColumns; j++) { CurrentValueNode = CurrentRowHeadNode.Get(j); if (CurrentValueNode == null) { Console.Write("0 "); } else { Console.Write(CurrentValueNode.Value + " "); } } Console.WriteLine(""); } }
public SparseMatrix Transpose() { ColumnHeadNode CurrentCHeadNode = StartColumnHeadNode; RowHeadNode CurrentRowHeadNode = StartRowHeadNode; int Rows = 1; int Columns = 1; while (CurrentRowHeadNode.NextInRow != StartRowHeadNode) { Rows++; CurrentRowHeadNode = (RowHeadNode)CurrentRowHeadNode.NextInRow; } while (CurrentCHeadNode.NextInColumn != StartColumnHeadNode) { Columns++; CurrentCHeadNode = (ColumnHeadNode)CurrentCHeadNode.NextInColumn; } SparseMatrix NewMatrix = new SparseMatrix(Columns, Rows); ValueNode CurrentValueNode; for (int i = 1; i <= Rows; i++) { CurrentRowHeadNode = this.GetRow(i); for (int j = 1; j <= Columns; j++) { CurrentValueNode = CurrentRowHeadNode.Get(j); if (CurrentValueNode != null) { NewMatrix.Insert(CurrentValueNode.Row, CurrentValueNode.Column, CurrentValueNode.Value); } } } return(NewMatrix); }