ここで実現したいプログラムは、ハードコーディングしてツリーを構築し、ハードコードツリーを印刷することです。オブジェクト名、質問、および同じ構造体を指すyesまたはnoノードを含む構造体から始めます。mainメソッドでは、構造体を段階的に構築しようとしました。しかし、それはノードを使用してツリーを作成する正しい方法ではないと思います。
私のデザインの説明:それはコンピューターとユーザーの間のゲームであり、コンピューターが質問をし、ユーザーが「はい」または「いいえ」で答えると、コンピューターがオブジェクトを推測します。
Start here
|
v
Does it have a tail?
/yes no\
v v
a pangolin Is it flat, round and edible?
/yes no\
v v
a pizza Pete
#include <stdio.h>
#include <stdlib.h>
//object name as key, questions as value
struct node {
char *objectname;// a string declaration to hold an object-name (which may be NULL)
char *question;// a string declaration to hold a question (which may be NULL)
struct node *yes_ptr; // only NULL for objects
struct node *no_ptr; // only NULL for objects
};
typedef struct node thenode;
thenode *objectname = NULL;
thenode *question =NULL;
void nodePrint(struct node *ptr){
if(ptr->objectname == NULL)
{
printf("Object : [NOTHING]" );
printf("Question : %s", ptr->question);
printf("Yes : &s", ptr->yes_ptr);
printf("No : &s", ptr->no_ptr);
}else {
printf("Object : %s", ptr->objectname);
printf("Question : [NOTHING]");
}
}
int main(argc, **argv){
//if ((new_obj = malloc(sizeof(thenode))) == NULL) { abort(); }
thenode a={NULL, "Does it have a tail?", "a pangolin", "pete"};
thenode b={"a pizza",NULL, NULL, NULL};
//thenode c={NULL, "Is it flat, round and edible?", "a pizza", "pete"};
//thenode c={NULL, "Can you dip it in your tea? ", "biscuit", "a pizza"};
struct node *ptr = &thenode;
nodePrint(&a);
nodePrint(&b);
}