- 締切済み
スタックとキュー
スタックにデータを積む関数push、データを取り出す関数push、キューにデータを積む関数enqueue,データを取り出す関数dequeueを作成しろという課題がでたのですが、関数がさっぱりわかりません。あと、popやpushの他に関数は作らなければ動きませんか?メインはなんとかできそうです。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- koko_u_
- ベストアンサー率18% (459/2509)
>どのようにスタックに積んだり取り出したりしていいのかがわかりません。 特に実装方法に指定がなければ、vassa04 さんの好きなようにコーディングして下さい。 関数の利用者から見て、オブジェクトがスタックに「積まれているように見えれば」よいのです。 つまりスタックなら 1、2、3 の順に値を push() したら、pop() が呼ばれるたびに 3、2、1 が得られれば、実装は何でもいいです。 実装したコードを質問欄に書けば、もっと具体的に「ここに問題がある」とか「こういった場合にクラッシュしてしまう」とか 有益なアドバイスが得られるでしょう。
- koko_u_
- ベストアンサー率18% (459/2509)
>はい。ある程度あります。 >プログラムを組めないんです。 えーと。もしかして今までプログラムで main() 関数しか書いたことがないとかいうオチですか?
- asuncion
- ベストアンサー率33% (2127/6289)
配列を使えば、スタックやキューの大きさに制限がかかる(配列の要素数が上限)ものの、 実装できます。 管理すべき項目は、配列の他に、 ・スタックポインタ ・キューの先頭 ・キューの末尾 です。 pop()やpush()では、スタックのどこにデータを格納したり、 どこからデータを取り出したりするかを、「スタックポインタ」で管理します。 enqueue()では、キューのどこにデータを格納するかを「キューの末尾」で管理します。 dequeue()では、キューのどこからデータを取り出すかを、「キューの先頭」で管理します。
- asuncion
- ベストアンサー率33% (2127/6289)
> 関数がさっぱりわかりません。 C言語のプログラミング以前の話として、 スタックやキューそのものに関する知識は 十分お持ちなのですね? > popやpushの他に関数は作らなければ動きませんか? enqueueやdequeueの作成も求められていますね。
補足
>C言語のプログラミング以前の話として、 スタックやキューそのものに関する知識は 十分お持ちなのですね? はい。ある程度あります。 プログラムを組めないんです。
- koko_u_
- ベストアンサー率18% (459/2509)
>データを取り出す関数push 取り出すほうは通常 top() と pop() の二つを実装すると思います。少なくとも push() ではない >popやpushの他に関数は作らなければ動きませんか? 実装によるけど、多分コンストラクタとデストラクタくらいは要る。
補足
>えーと。もしかして今までプログラムで main() 関数しか書いたことがないとかいうオチですか? 違いますが、どのようにスタックに積んだり取り出したりしていいのかがわかりません。