-1

リンクリストノードクラスがあるとしましょう

class node {
    private: 
        node *next_node;
    public:
        node *next() const;
};

node *node::next() const {
    return next_node;
}

next()はノード**next_nodeまたはノード*next_nodeを返しますか。また、リストクラス関数(つまり、挿入、削除、検索)を実装する上でのどちらの重要性もありますか?

** next_nodeが返されると思う理由は、next_nodeがすでにポインターであり、関数内でポインターとして返すと、ポインターへのポインターになるためです。私は次のような他の質問を読みました:ダブルポインターがリスト操作でも機能することを渡すリンクリストヘッドのダブルポインターなので、少し混乱しました。

4

2 に答える 2

0

実装された関数は、メンバー変数node::next()のコピーを返します。next_node両方next_nodeとこのコピーは同じインスタンスを指していnodeますが、それ以外は互いに独立しています。

ここに彼らの関係を実証しようとするいくつかのかなり悪いASCIIアートがあります

next_node---->[ノードインスタンス]
                ^
コピー------/
于 2012-04-13T16:14:39.717 に答える
0

宣言にあるように、タイプが次のノードへのポインタを返しますnode*

リストを進めるために使用されます。例えば:

for (node * n = list.head(); n; n = n->next()) {
    // Process node n
}
于 2012-04-13T16:15:26.453 に答える