(多分基本情報処理に関する問題だと思うのですが)データ構造に関する問題です、いくら考えても分かりません、宜しくお願いします。
【問】空の状態のキューとスタックの二つのデータ構造がある。
次の手続きを順に実行した場合、変数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」しかないと思うのですが、誰か誤りを指摘してください、宜しくお願いします。
No.2ベストアンサー
- 回答日時:
> スタックは、後入れ先出し
> スタックは、後入れ後出し
もちろん、後入れ咲き出しですね。
depがdeqだとすると答えはおっしゃるとおりdですね。
depが正しいとするとこれはノーゲームですね。
depをスキップすると確かにdですが。
通常の処理系なら7)までたどり着かないでしょう。
この回答への補足
ステップを踏んでいくと以下の状態になるのではないでしょうか?
(1)push(a)
スタック a キュー
(2)push(b)
スタック a,b キュー
(3)enq(pop())
スタック a キュー b
(4)enq(c)
スタック a キュー b,c
(5)push(d)
スタック a,d キュー b,c
(6)push(deq())
スタック a,d,b キュー c
(7)pop() → x
∴ x=b (一番最後に入れたものが最初に取出される(後入れ先出しの原理))
No.7
- 回答日時:
makohyuです。
申し訳ありませんが、私がこれ以上回答できることはありません。
質問、補足になんどもご友人がこういっている、・・・らしい、・・・聞いている、と不確定な情報ばかりです。
htgoさんが、この質問についての納得のいく回答を得たいのでしたら、質問の内容を精査し、あらためて質問をたてられることをお薦めいたします。
お役に立てず、すみませんでした。
No.5
- 回答日時:
#1,#3のmakohyuです。
>⇒ これは私が投稿する際のミスプリです。
あらら~、そうなんですか?
てっきりそういう設問だと思いました。
だとすると、単純に設問が間違ってるのでは?
このあいだに、「そういう設問」だとして、次の回答をせっかく書いてみたので読んでみてください。
=======================================
ご理解のために、この設問の意図を想像してみました。
出題者は、この設問の答えによって、
1) b と回答
おしい。しかし、学んだことは理解している。
2) b,d 以外の回答
おいおい、もう少しがんばりましょう!
3) d と回答
正解! よくぞ私の与えた矛盾に耐えた。
dep() の p に気がついて、これでは動かない、けど、「変数xに代入されるデータはどれか」という矛盾。
矛盾に耐えて答えを出せ! という意図なのだと思います。
================================================
深読みしすぎました^^;
お茶目な出題者だな~、と。
話を戻すと、「この問題は間違ってる」が私の回答です。
makohyuさん、有難う御座います。
⇒ と言うことは、「(6)push(deq( ))」なら、答えは「b」で良いのでしょうか。
どうももう一つ腑に落ちないのですが。
No.4
- 回答日時:
No.2です。
> ∴ x=b (一番最後に入れたものが最初に取出される(後入れ先出しの原理))
pがqの転記ミスということで有ればその通りです。
私もbをdと転記ミスしてました。すみません。
No.3
- 回答日時:
makohyuです。
編集ミスです。謹んで訂正いたします。
>⇒ということなら、(3)enq(pop( ))もなにもしないということですか?
>そうじゃないですよね?「b」をスタックから取出し、キューに入れていますよね。
そのとおりです。
確認なのですが、
>(6) のdep() は(6) のdeq()の間違いです。
とは、もともとの問題がそう書いてあるという意味ですか?
そうだとすると、
#2の方もおっしゃってましたが、この問題はペーパーに書かれた設問なので実際の処理は考慮しないという、昔からよくある設問なのではないでしょうか。
ですから、「スペルミスを見つけられるかというデバッグの力を問われている設問」と説明したのです。
>多分基本情報処理に関する問題だと思うのですが
「多分」、のあたりでこの辺かな? と思ったしだいです。
実際のコンピュータのメモリを対象にしている設問なら、「多分」とは書かれないはずですから。。。
makohyuさん、有難う御座います。
>多分基本情報処理に関する問題だと思うのですが
⇒ 私も友人に聞かれたのですが、どうも答えは「d」のようです。
その友人も答えは「b」になると言ってますので、私に確認を求めてきたのです。
>(6) のdep() は(6) のdeq()の間違いです。
⇒ これは私が投稿する際のミスプリです。
以上ステップを追って行くと「b」が正解と思われるのですが、皆様方の回答なり考え方はどのようなものでしょうか、宜しくお願いします。
No.1
- 回答日時:
スタックは、後入れ後出しです。
(1)push(a)
スタック a キュー
(2)push(b)
スタック a,b キュー
(3)enq(pop())
スタック a キュー b
(4)enq(c)
スタック a キュー b,c
(5)push(d)
スタック a,d キュー b,c
(6)push(dep())
スタック a,d キュー b,c
(7)pop() → x
(6) のdep() がスペルミスでなければ、X は d になりますけど。。。
dep()は定義されていないので、何もしない、データは動いていないというわけではないですか?
スペルミスを見つけられるかというデバッグの力を問われている設問ですかね。
makohyuさん、有難うございます。
(6) のdep() は(6) のdeq()の間違いです。
>スタックは、後入れ後出しです。
⇒スタックは、後入れ先出しではないのですか。一体どこで定義されているのですか?私の見ている参考書では「Last In First Out」と定義されていますが?
>deq()は定義されていないので、何もしない、データは動いていないというわけではないですか?
⇒ということなら、(3)enq(pop( ))もなにもしないということですか?
そうじゃないですよね?「b」をスタックから取出し、キューに入れていますよね。
makohyuさんの回答では、(6)は何も処理行為を実行していませんが、これは何故ですか。これはキューからbを取出し、スタックに入れるという行為だと思うのですが、全くここが理解できません。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 大学・短大 データの取り方に関する問題について 次に出てくる生徒はデータの集め方について過ちをしています。誤りを 1 2022/12/22 01:12
- USBメモリー・SDカード・フラッシュメモリー 任天堂3DSについて ソフトとデータのお引越しをしました。新しい3DSにSDカード等のデータが移行出 1 2022/09/03 04:22
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- USBメモリー・SDカード・フラッシュメモリー SDカード内データにウイルスが入った場合‥ スマホのmicroSDカード内のデータにウイルスが入った 7 2023/06/30 11:06
- その他(クラウドサービス・オンラインストレージ) 個人情報保護の件 1 2023/05/18 12:19
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Windows 10 JPG PNG サポートされていない形式 (JPGファイルで開ける、開けないがある場合) 4 2022/04/23 13:46
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.netでDLLを読み込んで実行す...
-
最大スタックサイズを大きくす...
-
printf / sprintf のスタック消...
-
エラー?メッセージ
-
スタックフレームの消滅
-
_CRTIMPの意味は?
-
関数のプロローグとエピローグ...
-
逆ポーランド記法
-
マス目上の移動のアルゴリズム
-
C言語・スタックを使用した逆...
-
CASLとCASL2の違いについて
-
スタック領域変更
-
Cプログラミングの関数電卓のア...
-
スタック C言語
-
再帰処理を非再帰処理に書き換...
-
gccでスタックサイズを変更する...
-
スタックを用いて整数配列を入...
-
スタックの仕組み
-
スタックの伸張方向
-
H8マイコン スタック領域に...
おすすめ情報