HOME»応用情報技術者試験掲示板»理解できませんでした。
投稿する

理解できませんでした。 [1998]

 午後さんさん(No.1) 
https://www.ap-siken.com/kakomon/25_aki/pm02.html
午後問題プログラミングの(ア)についてです。
解答はEDGEの先頭アドレスとありますが、理解できませんでした
例えばメモリ領域数がN個あってメモリ領域が一杯になったら
EDGEのprveはN個目の領域(最後の領域)を指し示す気がすると自分はおもうのですが・・・。
2020.04.15 08:05
ソラールさん(No.2) 
連結リストは、メモリ領域において配列のように順番通り配置されているとは限りません。
通常、メモリ領域内で自由な位置に配置されているので、構造体に next, prev のような属性を持たせて、それぞれのデータに順番をつけ、あたかも一つのデータ構造として振る舞わせているのです。"EDGE  の prev はN個目の領域(最後の領域)を指し示す" というのは、配列的な考え方だと思わます。
メモリ領域内で、配置に規則性がないとすれば、EDGEの先頭アドレス ということが答えになるのも納得が行くのではないでしょうか
2020.04.15 10:36
guestさん(No.3) 
AP シルバーマイスター
※メモリブロックを面倒なのでmbと呼ぶ。
※【mb1】→【mb2】は、mb1内のnextによって、うちがだめなら次はmb2を見てみなさいと案内されることを示す。

今回構成するのは循環リストなので
【 EDGE(mb0)】→【mb1】→【mb2】→【mb3】┐
↑___________________________」
という感じになっているわけですよね。

末端がmb3だったとして、
(3)~(5)の繰り返しによって、mb1、mb2、mb3の順番に見て行ってどれにも”割り当てたいバイト数以上の大きさのデータ部分をもつメモリブロック”が見つからなければ、最後はmb3内のnextによってmb0に行けと言われてしまうという。。。
最後は(3)~(5)サイクルが1周おわるたびの中間チェック的な存在の(2)によって、mb全体をぐるっと1周見回したと判定されて終了。

こんな感じなのだと思います。
2020.04.15 15:58

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop