2011-11-15 16 views
2

免責条項と同じように、私はハードコードソリューションを探しているわけではなく、正しい方向のナッジを探しています。複数の配列を含むバイナリツリー構造

基本的に、各ノードに2つのデータ配列と2つの別々の文字配列を含むツリーを作成する必要があります。現時点では私の構造体だし、入力フォームである

struct Node { 
    char *name; 
    char *number; 
    struct Node *left; 
    struct Node *left; 
}; 

name number 
name number 
name number 
. 

.が終了されて、今、私は、それを解析する方法のための理論を持っているすなわちgetcharまで.およびscanfnameおよびnumberをアレイに含む。しかし、この時点から、私はどのように正確に私は配列を渡す必要があるのか​​わかりません、私は配列のサイズを定義するなど、ツリーにものを追加する関数に渡す必要があります誰かがこの問題のヒントを与えることができますか?

+0

'node-> name = strdup(inputname);'? – AShelly

答えて

1

まず、あなたが動的メモリを使用する必要があります。配列のサイズは、読んだ後、実行時に、私が推測するファイルから定義されます。 char*あなたが読んで、NULLで終了している(つまり、最後の文字が「\ 0」)場合

は、あなたはそれらのサイズを取得するためにstrlen機能を使用して、あなたの前にメモリを割り当てるためにmallocにその値を渡すことができますstrcpyを使用して文字列をそのメモリにコピーします。 「あなたはmallocすべてを返すようにfreeを呼び出すことを忘れないでくださいあなたは中1つの用語を使わだから?それは、バイナリツリーであるか、してみてください(あなたのデータ構造にそれらを挿入する関数に2 char*を渡す

を編私はスタック型を行うだろう

0

タイトルとあなたの質問内の別):あなたがポジションをインクリメントし、より多くのスペースが必要な場合は、CAがインクリメントサイズは、nullであるかどう

typedef struct 
{ 
int pos; 
char *array; 
int size; 
} charArray; 

charArray *newCharArray(); 

void pushCharArray(charArray * ca, char c); 
void popCharArray(charArray *ca); 


charStack *name; 
charStack *number; 

インサイドpushCharArrayは、あなたがチェックする必要があります。.. 。

関連する問題