0

二分探索木では、ノード構造は次のようになります。

class Node
{
    public:
    int key;
    Node *left;
    Node *right;

};  

そのため、ノードを作成する際に行います

Node* createNode(int key)
{
    Node *node=new Node();
    node->key=key;
    node->left=NULL;
    node->right=NULL;

    return node;
}

今、整数キーの代わりにキーと2次元マトリックスが必要です。このようなもの

class Node
{
    public:
    char matrix[3][3];
    Node *left;
    Node *right;


};

今すぐノードを作成する方法は?

Node* createNode(char key[3][3])
{
    Node *node=new Node();
    node->matrix=key;     //This line
    return node;
}
4

2 に答える 2

2

C++ では、同様に単純です。

vector<vector<double> > matrix;
vector<double> &row = matrix[i];

Cではそれは

double *row = Matrix[i];

C の方法は C++ でも機能しますが、できる限りプレーンなポインターよりもコンテナーを優先する必要があることに注意してください。

于 2012-05-12T21:55:23.457 に答える
0

@dasblinkenlightが言ったように、行を取得するのは簡単です。ただし、列を取得するには、はるかに複雑です。行列の行数がわかっていると仮定すると、次のことができます。

int *copyColumn(int **matrix, int column, int rows)
{
    int *data = new int[rows];

    for (int i = 0; i < rows; i++)
         data[i] = matrix[i][column];

    return data;
}

使い終わったら、忘れずにdeleteデータ化してください。

于 2012-05-12T22:16:51.607 に答える