数式が読み込まれない場合は1回再読み込みしてみてください。基本情報-テクノロジ系-データ構造とアルゴリズムこんにちは、ももやまです。今回は基本情報に頻出するデータ構造の「スタック」と「キュー」についてまとめていきたいと思います。練習1練習2練習3練習47.練習問題の答え解答1解答2解答3解答48.さいごになお、他に重要なデータ構造として「配列」と「リスト」があります。「配列」、「リスト」については下の記事にまとめているのでそちらをご覧ください!www.momoyama-usagi.com1.スタックスタックは、下の図のように新しいデータから順番にデータを取り出すことができるデータ構造です。上の図の場合、「データ4→データ3→データ2→データ1」の順に取り出します。日常生活で例えると、Chromeなどのブラウザにある「戻るボタン」がまさにスタックです。(戻るボタンを押すと直前見ていたページに移動し、さらに連打するとどんどん古い履歴にさかのぼっていきますね。)スタックにデータを入れることをpush、一番新しいデータを取り出すことをpopと呼びます。Out)と呼ぶ人もいます。2.キューキューは、下の図のように新しいデータから順番にデータを取り出すことができるデータ構造です。上の図の場合、「データ1→データ2→データ3→データ4」の順に取り出します。日常生活でたとえると、ライブ会場などにできる行列がまさにキューです。(先に並んだ人から順番に会場に入れますよね*1。)キューにデータを入れることをenqueue、一番古いデータを取り出すことをdequeueと呼びます。ここでスタックとキューの違いを簡単に復習しましょう。Out)3.リングバッファ(応用)queueが環状ではない場合、enqueue、dequeueを繰り返しているとデータに空きがあっても追加できなくなっています。dequeueができるようにしています。上のような環状のキューのことをリングバッファと呼びます。基本情報にはあまりリングバッファは出てこないのでさらーと流してOKです。4.スタックの実装C言語でのスタックの実装例を紹介したいと思います。させて動作確認するの3点を実装しています。エラー処理まではしていませんのでご了承ください。エラーが発生しないように対策するのが理想です。スタック型の構造体は参照渡しにするため、関数定義のところでポインタ引数としています。わからない人はこちらの記事で確認することをおすすめします)5.キュー(リングバッファ)の実装C言語でのキューの実装例を紹介したいと思います。させて動作確認するの4点を実装しています。エラー処理まではしていませんのでご了承ください。エラーが発生しないように対策するのが理想です。スタックのときと同じく、キューの構造体は参照渡しにするため、関数定義のところでポインタ引数としています。6.練習問題では、少しスタックとキューの練習として基本情報や応用情報の問題を解いていきましょう。練習1キューに関する記述として,最も適切なものはどれか。午前問5]ア:最後に格納されたデータが最初に取り出される。イ:最初に格納されたデータが最初に取り出される。ウ:添字を用いて特定のデータを参照する。エ:二つ以上のポインタを用いてデータの階層関係を表現する。練習2空の状態のキューとスタックの二つのデータ構造がある。次の手続を順に実行した場合、変数xに代入されるデータはどれか。ここで、手続きに引用している関数は次のとおりとする。データyをスタックに積む。データをスタックから取り出して,その値を返す。データyをキューに挿入する。データをキューから取り出して,その値を返す。pop()ア:aイ:bウ:cエ:d練習3四つのデータA,B,C,Dがこの順に入っているキューと空のスタックがある。実行回数は最小で何回か。ここで、pop_enqはスタックから取り出したデータをキューに入れる操作であり、deq_pushはキューから取り出したデータをスタックに入れる操作である。午前問5]ア:2イ:3ウ:4エ:5練習4PUSH命令でスタックにデータを入れ、POP命令でスタックからデータを取り出す。動作中のプログラムにおいて、ある状態から次の順で10個の命令を実行したとき、スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。午前問7]ア:29イ:7ウ:326エ:557.練習問題の答え解答1解答:イそれぞれの選択肢ごとの解説ア:最後に格納されたデータを取り出すのはスタック。bとなるので答えはイ。順番にすることができる。よって答えは3回となりイ。解答4解答:イ今までの問題パターンとは逆で、操作を遡る必要があるので少しむずかしいかもしれません。落ち着いて操作を巻き戻していきましょう。頻出するスタックとキューについてまとめていきました。最後にスタックとキューのデータの出し入れの様子を同時にアニメーションしたもので取り出し方の違いを確認しましょう。ついてまとめていきたいと思います。それでは、さらば!*1:割込みしてくる人がいなければ。システムオートマトンPrologCLOSEサイト内検索を行います。はてなブログPro数学と情報が得意な大学生です。累計:リアルタイム現在の閲覧者数:。