- ベストアンサー
この構造体の意味が分かりません。
struct OBJECT{ ____struct OBJECT *yn[2]; ____char *item; }; この構造体はどんな構造体なのか教えてください。 特に、struct OBJECT *yn[2];の部分を教えてもらえるとありがたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
★『struct OBJECT *yn[2]』は『struct OBJECT』型へのポインタです。 ・構造体『struct OBJECT』の中に自分自身へのポインタ変数を持つものを 『自己参照構造体』と呼びます。 ・回答者 No.1、No.2 さんと同じく『双方向リスト』や『2進木』の基本構造ですね。 ・それで多分『yn[2]』というメンバが『2進木』の『Yes』、『No』の可能性がありますね。 つまり、ゲームなどでコマンドを選択して分岐・進行していくのに便利そうです。 ・もしかしたら、何かのゲームのソースを覗いて『意味』が分からなくて質問でもしましたか? ・とにかく、『yn[2]』というメンバが『2進木』などの『ノード』を表しているのではないでしょうか。 ・以上。おわり。→情報不足のため、全ては推測でのアドバイスです。参考にして下さい。
その他の回答 (4)
- Tasuke22
- ベストアンサー率33% (1799/5383)
サービスで図を作ってみよう。沢山のOBJECTがあって、 一つのOBJECTを■で表すと、以下のように1つのOBJECTは 二つのOBJECTのリンクが持てるわけです。 図1.2進木とかリストと言われる構造 itemitemitemitem ↑ ↑ ↑ ↑ ■→■→■→■・・・・ ↓ ↓ ↓ ↓ ■ ■ ■ ■ ・ ・ ・ ・ 図2.両方向にリンクを持つ。スタックや行列に使う (行列は数学で言う行列ではなくて、単なる並び) ← ← ← ← ■→■→■→■→・・・・ ↓ ↓ ↓ ↓ itemitemitemitem
>struct OBJECT *yn[2]というのは何型と言えばいいのでしょうか。 書いてあるとおり、struct OBJECT *型です。 ある構造体のメンバーが、その構造体と同じ型を持つ場合、 その構造体を「自己参照構造体」といいます。 必須キーワード:自己参照構造体、リスト構造
- Tasuke22
- ベストアンサー率33% (1799/5383)
そうですね。#1さんの仰るとおりでしょう。 リスト構造を表す基本的な形に見えます。 スタックとかなんでも表せる汎用的な構造 ですか・・・特定出来ませんね。
- rinkun
- ベストアンサー率44% (706/1571)
これだけでは分かりません。 OBJECTを操作する関数のコードをみれば分かるでしょうが。 ただ推測すると、双方向リンクのリストではないでしょうか。 ynが前方と後方へのリンクでitemが実アイテムをポイントしてる。 そんな感じかと思いますけど。
補足
OBJECTという構造体の中にchar型の*itemがあるのは分かるのですが、struct OBJECT *yn[2]というのは何型と言えばいいのでしょうか。 よろしくお願いします。