- ベストアンサー
スタックに構造体をつむには?
C言語でスタックに構造体を積む方法を知りたいのですがどうしたらよろしいのでしょうか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
単純なサンプル -------------------------------------------------------------- #include <stdio.h> typedef struct member { char *name; int no; } MEMBER; #define STACK_SIZE 10 int sp=STACK_SIZE; MEMBER *stack[STACK_SIZE]; MEMBER *push(MEMBER *v){ return stack[--sp]=v; } MEMBER *pop(void){ return stack[sp++]; } int main(void){ MEMBER a = { "UETO", 2, }; MEMBER b = { "INOUE", 1, }; MEMBER c = { "BLUE", 5, }; MEMBER *wk; push(&a); push(&b); push(&c); wk=pop(); printf("No.%d:%s\n",wk->no,wk->name); wk=pop(); printf("No.%d:%s\n",wk->no,wk->name); wk=pop(); printf("No.%d:%s\n",wk->no,wk->name); return 0; }
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
関数の引数として構造体を渡すとかそういう意味なら そのまま、引数として渡すとよかったと思います。 そうではなくて、自家製のスタックであれば 構造体のポインタの配列を準備して、 そこに、構造体のアドレスを積めばいいかと思います。
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
自動変数として定義するだけでは? そういうことではなくて?
補足
pop()やpush()の関数で引数や戻り値をどの型にしなければいけないのかということを聞きたかったのでした。説明不足ですみません。 アドレスを積んでいくイメージなので、型がいまいちわからなかったのです。
お礼
例を載せていただいてありがとうございます。 動きがよく理解できました。 本当にいつもありがとうございます!