1

単語のリストを入力として受け取り、それらを二分木に並べ替えて、たとえば辞書のように見つけられるようにするプログラムを作成しようとしています。これは私がこれまで行ってきたnewEl -> el = input;ことですが、ツリーが最初に作成されたときに NULL el を指そうとしているためであることはわかっていますが、改善する最善の方法がわかりません。私のコードは次のようになります。誰にもアイデアはありますか?ありがとう。

struct node *tra(struct node * start, Type input) {
  struct node * thisNode = start;

  if (thisNode == NULL)

    Type current = thisNode -> el;

    if (strcmp(input, current) > 0)
        return tra(thisNode -> right, input);

    else if (strcmp(input, current) < 0)
        return tra(thisNode -> left, input);

    else
        return thisNode;
  }
}

Ta insert(Type input, Ta ta) {
  if ((find(input, ta)) == FALSE) {
    newEl -> el = input;

  }

  return ta;
}

Boolean find(Type input, Ta ta) {
    if (tra(ta -> head, input) == NULL)
        return FALSE;
    }
4

3 に答える 3

0

問題が何であるかをすでに知っているので、それを解決する必要があります。ノードを割り当てて挿入します。

Ta insert(Type input, Ta ta) {
  if ((find(input, ta)) == FALSE) {
    // call to tra will fail. this is the place to create a new node
    struct node *newEl = (struct node*)  malloc(sizeof(struct node));
    newEl -> el = input;
    newEl -> left = 0;
    newEl -> right = 0;
    // do the insertion ....
  }
}
于 2013-02-17T15:54:36.423 に答える
0

新しいノードを作成したいようですが、次のように、新しいノードにスペースを割り当てる場所がどこにもありません。

newEl = (struct node*)malloc(sizeof(struct node));

幸運を!

于 2013-02-17T15:58:19.397 に答える