-3

私の目標は、「ecdgaf b」と入力すると、出力は

e

(\t) c                <- first left node

(\t)(\t) a            <- second left node

(\t)(\t)(\t) b        <- third right node

(\t)(\t) d            <- second right node

(\t) g                <- first right node

(\t)(\t) f            <- second left node

しかし、意図したとおりに動作させることはできません。

これは、Brian W. Kernighan と Dennis M. Ritchie による「C プログラミング言語」の例です。

関数を変更しました。出力ウィンドウで \t を確認するにはどうすればよいですか。

私の試み:

void prt(AW *p)
{
int j;
int temp;

if(p != NULL)
{   
          temp = judge;

    while(1)
    {   temp = temp / 2;
        count++;
        if(temp == 0)
            break;
    }

    for(j=1; j<count; j++)
        putchar('\t');
    printf("%-16s\n",p->word);

    count=0;

    if(p->left != NULL)judge++;
    prt(p->left);       

    if(p->right != NULL)judge++;
    prt(p->right);      }

}

4

1 に答える 1

3

以下のような構造体があるとします。

typedef struct
{
int data;
struct node * left;
struct node *right;
} node; 



 void printtreenode(node *root)
    {
    if(root == NULL)
      return;
    printtreenode(root -> left);
    printf("%d\n",root -> data);
    printtreenode(root ->right);
    }

2 つの引数を渡しprinttreenodeて再帰的であることを確認する必要はありません。これは機能するはずであり、フォーマットされた出力に従って変更できます。

于 2012-11-26T10:13:49.150 に答える