1

セグメンテーション違反が発生しているようで、tra の呼び出しからエラーが発生しているように見えますが、記述したコードの何が問題なのかを正確に確認できません。本当に手がかりがありません。ヒントを教えてください。どうもありがとう。

struct node *tra(struct node * start) {
  struct node * current = start;       
  return current; }

Table ins(Key_Type input, Table table) {
  if ((find(input, table)) == FALSE) {
    struct node *newVal = tra(table -> head, input);
    newVal -> element = input;

頭、左、右の要素を含む構造体ノードを定義しました。最初は空のツリーを作成しているため、null の場合は tra が current を返すことが確実にわかっているため、すべてのノードが空になります。

4

2 に答える 2

1

tra不審に見える。チェックは何のためですか?ある場合currentNULLそれを返し、そうでない場合はスタックから落ちて呼び出し元にゴミを返します。

于 2013-02-16T18:12:17.527 に答える
1

そこには奇妙なことが起こっています。

if (current == NULL)
  return current;

なぜreturn currentですか?現在はnull?

struct node *new = tra(table -> head, input);

tra単一の引数を取りますか?

を使用することをお勧めしますgdb。今すぐ使い方を学べば、この質問に自分で答えられるようになります。難しくありません。

于 2013-02-16T18:13:40.790 に答える