質問: NULL) /* 空スタックのとき */ return ('\0'); else /* 空スタックでないとき */ return p->data; /* スタックの先頭のデータを返す */ } int main(void){ int n=0,i=0,j=0; data_type s[50],p[50]; printf("中置記法で入力する文字列の文字個数を指定してください:"); scanf("%d",&n); printf("中置記法の順に代入文の文字列を一文字ずつ入力してください:"); scanf("%c",&s[i]); for(i=0;i=prior(s[i])){ p[j]=last_node(&head); j++; } } for(i=0;i
回答: 順序が変わらないのはprior関数のif分が 比較(==)ではなくて代入(=)になっているので すべての文字の優先度が同じになっているため 終わらないのはlast_nodeで 値を変更しないポインタppをwhileの条件にしているから ざっと見た感じ原因はこんなところでしょうか