• ベストアンサー

キューの問題

分からない問題があります。 「キューを配列で実現する場合を考える。配列のサイズをnとすると、空のキューに対して、_________ の実行がなく、__________ を n+1回連続して実行すると問題が発生する。」空欄を埋め、発生する問題を説明しなさい。 どなたかお教え下さい。

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

  • ベストアンサー
回答No.1

キュー (コンピュータ) http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A5%E3%83%BC_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29  最初の記入欄は専門用語的回答を求めるならば、「デキュー」で、  2個目の記入欄は、「エンキュー」だそうです。 FIFO http://ja.wikipedia.org/wiki/FIFO  こちらの説明を参照すると、それぞれが「取り出す」「格納」のようですね。

miffy69
質問者

お礼

助かりました。本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

 つい、送信ボタンを押してしまった。  先ほどの続きです。 >発生する問題を説明しなさい。  バッファオーバフローの話のようです。 バッファオーバーフロー 【buffer over-flow】 http://e-words.jp/w/E38390E38383E38395E382A1E382AAE383BCE38390E383BCE38395E383ADE383BC.html  先ほど書いていたハードウェアとして実装している分にはセキュリティーホールにはなりにくいとは思うのですが、ソフトウェアだと、意図的に実行中のプロセスを誤動作させて意図させないプログラムを実行させる手口がありますね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • キューとスタックの問題です、宜しくお願いします

     (多分基本情報処理に関する問題だと思うのですが)データ構造に関する問題です、いくら考えても分かりません、宜しくお願いします。 【問】空の状態のキューとスタックの二つのデータ構造がある。 次の手続きを順に実行した場合、変数xに代入されるデータはどれか。 ここで、 ・データyをスタックに挿入することをpush(y) ・スタックからデータを取り出すことをpop( ) ・データyをキューに挿入することをenq(y) ・キューからデータを取り出すことをdeq( ) と表す。 (1)push(a) (2)push (b) (3)enq(pop( )) (4)enq(c) (5)push(d) (6)push(dep( )) (7)pop( ) → x 以上の答えとして(6)にはbがスタックにpushされるので、後入れ先出し を考えると当然「xにはb」が入るはずなのですが、どうも答えは「d」となっています。 「d」は「b」より前にスタックされてますので、最新で取出される情報は「b」しかないと思うのですが、誰か誤りを指摘してください、宜しくお願いします。

  • c++のキュー

    スレッド間のデータの受け渡しとしてキューを利用したいです。 queueというクラスがありますが、データの取得メソッドが好みのものではないです。 他にキューの実装があれば教えてください。★ 仮に、キューからのデータ取得メソッドを「shutoku()」としたときに、 キューにエントリがある場合は取得、 キューにエントリが無い場合は待ち状態に入り(「shutoku()」で実行が一時停止)、キューに追加が入った場合に「直ちに」復帰するメソッドを使いたいです。 そんなクラス・メソッドはSTLかBOOSTに無いでしょうか?★ 無ければ作ろうと思いますがなるべく問題の元は作りたくないです。

  • 配列の問題

    配列の問題です。 n個の要素を持つ一次元配列の値(変数値)をまったく逆に入れ替えるプログラムを作りたいのですが、この場合どのようにして逆を表現すればよいのかわかりません。 (nの値は読み込み、配列は奇数個でも偶数個でも使えるプログラムでなければなりません) 参考書を見ながら作ってみたのですが…だめでした。 プログラム初心者です。アドバイスお願いします。 int main(void) { int i,n; int vc[n]; printf("n個の要素を持つ一次元配列をつくる\n"); printf("nの値を入力してください\n"); scanf("%d",&n); for (i=0;i<n+1;i++) vc[i]=i+1; for (i=0;i<5;i++) printf("vc[%d]=%d\n",i,vc[i]); printf("この配列を逆に入れ替えると\n); return 0; }

  • C言語のキューに関する質問です。

    キューの演習が出たのですが全く手が出ず 困っています。 どなたか詳しい方にご助力いただけたらと思います。 以下問題です。 左上の座標を(0,0) とするマス目でできたNxNマスの迷路があり、 ’*’ は壁で、’ ’ は空きマスの通路とする。下記のサンプルを修正して、 このような迷路において、指定したスタートS からゴールG まで、 下記の手順で最短距離を求めるプログラムをつくれ。 手順1: スタート位置の座標=(sx,sy) と距離=0 をキューに記録する 手順2: キューが空になるまで以下を繰り返す。 手順2-1: キューから位置と距離を取り出し、現在の位置と距離とする。 手順2-2: もしその位置がゴールG ならば繰返しを抜ける。 手順2-3: 現在の位置の上下左右を調べ、空きマスならば(現在の距離+1) を そのマスの距離として座標とともにキューに保存する。 手順3: ゴールに到達していれば距離を出力して終了する。 • N は7 とする。 • 一度通った道を記録するように工夫することで、効率よく計算することもできる。 • G に到達できないことが分かった時は-1 を出力すること。 例えば、迷路が最大でもN x N マスしかないことを利用すると、 距離がN x N を越えてもG に辿り着けないと、 G に到達できない迷路であることが分かる。 /* (x,y) 地点とそこまでの距離c を記録する構造体*/ struct cost { int x; int y; int c; }; int main(void) { #define BUFSIZE (N*2) char buf[BUFSIZE]; char maze[N][N]; int i, j, sx, sy, gx, gy; struct cost pos; /* 迷路を読み込み、maze にセットする。*/ for (i = 0; i < N; i++) { fgets(buf, BUFSIZE, stdin); for (j = 0; j < N && (buf[j] != ’\n’ && buf[j] != ’\0’); j++) { if (buf[j] == ’S’) { sx = j; sy = i; buf[j] = ’ ’; } else if (buf[j] == ’G’) { gx = j; gy = i; buf[j] = ’ ’; } maze[i][j] = buf[j]; } while (j < N) maze[i][j++] = ’ ’; } /* ※ここを主に修正する */ /* 最短距離を表示する。*/ printf("%d\n", pos.c); return 0; おそらくキューの実装からやらなければならないのですが、 取り出すときの戻り値やら構造体、二次元配列の扱い等々で ちんぷんかんぷんです。 どうかよろしくおねがいします。

  • この問題の意味が分かりません。

    配列aの全要素を配列bに対して逆順にコピーするプログラムを作成せよ。 なお、二つの配列の要素数は同一であると仮定して良い。 この問題の意味なんですが、要素数はnであるとして、 (1)a[n-1]をb[n-1]に、a[n-2]をb[n-2]に・・・a[0]をb[0]にコピーしていくということですか? 結果、配列aの全要素はbと同じ。 (2)それとも、a[0]をb[n-1]に、a[1]をb[n-2]に、・・・a[n-1]をb[0]にコピーしていうことですか? 結果、配列bはaの全要素を逆順にした要素が入ってる。 ちなみに、どちらの場合もプログラムは分かります。 やっぱり(2)の意味でしょうか?

    • ベストアンサー
    • Java
  • 整数問題

    連続する3つの整数の積は6の倍数であることを示せ。 という問題なんですが、 任意の整数を n とおいて n(n+1)(n+2)と とりあえず置きました。 これを展開したりしてみましたが6の倍数であることを示せそうな式になりませんでした。 こんなときは (1) 1×2×3=6 (2) 2×3×4=24  (3) 3×4×5=60 (4) 4×5×6=120 (5) 5×6×7=210 ゆえにどれも6の倍数であるから 連続する3つの整数の積は6の倍数である。 と答えた場合 試験官はいくらか点数をくれるでしょうか? それとも 式で表さなければいけないのか。 証明の仕方も教えていただけたら助かります。

  • 逐次検索と平均比較回数

    アルゴリズムの解析について勉強しています。アルゴリズムに関して全くの初心者なので、アドバイスをいただけるとありがたいです。 今回、課題で出されたのですが、例として、n個の配列(array)があります。 そのArrayが [ 1, 9, 7, 4, 3, 8, 2]とソートされていない状態だとすると、平均比較回数は、 (n+1)/2と定義されています。 もし、探したいindexが 4 だとすると、4回探さなきゃいけないということだし、もし、探したいindexがn番目というケースもあります。 上記のケースは、探したいindexが1個というケースですが、 もし、n個の配列に要素が2回出現した場合、(nは必ず偶数の配列で、要素が1個だけしかないということはありません。あと、2連続で要素が出現することもありません。それぞれの要素はバラバラに散らばっています) 1. 探したい1indexが1番目の場合、2/n*1 2. 2番目の場合、 { (n-2)/n*2/(n-1) } * 2 3. 3番目の場合、 { (n-2)/n* (n-3)/(n-1)* 2/(n-2) } * 3 ...... となっていくと、教授に言われ、2回目のindexの出現は気にしなくていいと言われました。 となると、探したいindexがn/2までを考慮すればいいとなりますよね? 以上のことをΣなり、!なりを使って表したいたいのですが、できるでしょう? 長くなりましたが、よろしくお願いします。

    • ベストアンサー
    • Java
  • 数学の問題 場合の数と漸化式

    数学の問題 数字1,2,3をn個並べてできるn桁の数全体を考える。そのうち1が奇数回現れるものの個数をa(n)、1が偶数回現れるか全く現れないものの個数をb(n)とする。 a(n+1)、b(n+1)をa(n)、b(n)を用いて表せ。 という問題です。 説明された考え方 a(n+1)について 1が奇数回現れている数の一番左に1桁の数を加えるとすると 1が奇数回でないといけないから2か3である。 よって、2a(n) 1が偶数回現れている数の一番左に1桁の数を加えるとすると 1が偶数回でないといけないから1である。 よって、b(n) 以上より、a(n+1)=2a(n)+b(n) 同様にして、b(n+1)=a(n)+2b(n) が答えです。 解説を聞く前に自分で考えたその考え方は同じでした。 n桁の数に1桁の数を加えるというやり方です。 しかし、計算が違いました。 説明では、「一番左に1桁加える」として計算していますが 最初、n桁の数の場合、その数と数の間はn+1あるから そのn+1の間から一か所選んで、そこに2か3を入れる、そしてそれがa(n)個あるから a(n+1)=(n+1)C1 * 2 * a(n) + (n+1)C1 * 1 *b(n) を計算しました。 何がいけないのでしょうか? 一番左に加えると決めつけてしまってもいいのでしょうか? お願いします。

  • 数学の問題についてです。

    数学の問題についてです。 N=n^4-9 のnが自然数でNが素数のときNの値は? という問題において、 N=(n^2+3)(n^2-3) と因数分解をするところまでは 求めることができました。 そこで何故、n^2+3>0 から n^2-3>0だとわかるのかがどうしても理解できないので、どなたかご説明お願いいたします。

  • 連続複利の問題です

    連続複利の問題です 100万円を銀行に預金する。預金の瞬間利子率を年率5%として、連続複利を用いる場合預金が800万円を超えるのはおよそ何年後か。 以下の5つから選べ。 20,40,60,80,100 という問題なのですが、P円の元本は連続複利の場合N年後はP*e^Nrとなり、100e^0.05N=800を解こうと思ってもうまく解けません。 しかも上の式を変形してe^0.05N=8とし、N=40として0.05N=2となり,2.7^2=7.29,2.7^3=19.68となります。 7.29と8だと違いすぎる気がするのですがこの場合40が答えなのでしょうか? 解答お願いします。

このQ&Aのポイント
  • TrackPointKeyboard 2を利用しているが、本日からファンクションキーが使えなくなった
  • 「FnLock」キーのLEDも消えており、ファンクションキーの使用ができない
  • LEDの点灯もなく、ファンクションキーが使えない状態の解決方法を教えてほしい
回答を見る