2012-05-05 12 views
2

私はC++で新しく、リンクリストを扱っています。しかし、私はリンクされたリストクラスを書いている間、私はそれを混乱させる。私はサッカーリーグのコードを書こうとしています。私はリンクされたリストの各チームを保持しようとしているし、各チームはプレイヤーを持っているので、リンクされたリストにもそれらを保存したいと思います。したがって、リンクリストクラスには、リンクリストを指すメンバが必要です。リンクリストは、私が作成しているクラスと同じプロパティです。それは可能ですか?同じリンクリスト内のリンクリスト

+1

'LinkedList'クラスの中の' LinkedList'へのポインタを持つことができます。 'LinkedList'クラスの中に' LinkedList'オブジェクトを置くことはできません。無限のサイズのオブジェクトにつながります。あなたは 'std :: list'を簡単に使うことができます。 –

+0

どのようなリンクリストの実装を使用していますか? 'std :: list'を使っていますか? – Shep

答えて

3

はい。チームリストのノードには、選手のリストが含まれます。あなたがstd::listを使用できない場合は、次の

struct Player 
{ 
    Player* nextPlayer; 
}; 

struct Team 
{ 
    Team* nextTeam; 
    Player* firstPlayer; 
}; 

を私はリストには、これをモデル化するための最適な構造ではないことをいえかなり確信しています。

1

リストに常に選手とチームを使用したくないかもしれないとして、私は次のような構造を好む:

struct PlayerNode 
{ 
    Player* item; 
    PlayerNode* nextNode; 
}; 

struct TeamNode 
{ 
    Team* item; 
    TeamNode* nextNode; 
}; 

struct Team { 
    // ... 
    PlayerNode* firstPlayer; 
}; 

これは、あなたが(に接続されていない単体のオブジェクトとして、チームやプレーヤーを使用することができます他のチーム/選手)。 しかしチーム内では、選手にアクセスすることもできますが、これは望ましいことです。

0

C++を使用している場合は、代わりにSTLを使用します。私は1つのすべてのプレーヤー

ベクトル

で一例を説明しています、これはあなたが2リーグLeague1、League2が 各2つのチームTeam1、Team2 を持って、各チームは10人の選手のP1を持ってい 階層構造であると仮定し、P2

チームはtemp_teamという名前のベクトルに格納することができます すべてのtemp_teamをtemp_leagueというベクトルにプッシュすることができます すべてのtemp_leagueベクトルはfootBall、Leagueなどのベクトルにプッシュできます。