• ベストアンサー

スタックに構造体をつむには?

C言語でスタックに構造体を積む方法を知りたいのですがどうしたらよろしいのでしょうか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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; }

h9well3
質問者

お礼

例を載せていただいてありがとうございます。 動きがよく理解できました。 本当にいつもありがとうございます!

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

関数の引数として構造体を渡すとかそういう意味なら そのまま、引数として渡すとよかったと思います。 そうではなくて、自家製のスタックであれば 構造体のポインタの配列を準備して、 そこに、構造体のアドレスを積めばいいかと思います。

回答No.1

自動変数として定義するだけでは? そういうことではなくて?

h9well3
質問者

補足

pop()やpush()の関数で引数や戻り値をどの型にしなければいけないのかということを聞きたかったのでした。説明不足ですみません。 アドレスを積んでいくイメージなので、型がいまいちわからなかったのです。

関連するQ&A

専門家に質問してみよう