コード例 #1
0
ファイル: SparseMatrix.cs プロジェクト: jawetzel/cmpsProjects
        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("");
            }
        }
コード例 #2
0
ファイル: SparseMatrix.cs プロジェクト: jawetzel/cmpsProjects
        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);
        }