タグ

2010年3月19日のブックマーク (2件)

  • 循環バッファ

    概要 「配列リスト」は、 要素へのランダムアクセスが非常に高速という利点がある一方、 末尾以外への要素の挿入が極端に遅いという欠点がありました。 用途によってはこれでも十分なのですが、 ある用途においては、末尾だけでなく先頭にも要素の挿入・削除を行いたい場合があります。 そこで、先頭と末尾の要素の挿入・削除を高速に(オーダー O(1) で)行えるデータ構造として、 循環バッファ(circular buffer)という物が考えられています。 循環バッファはリングバッファ(ring buffer)等とも呼ばれます。 循環バッファは、その名前の通り、 配列の先頭と末尾を繋いだ環のようなイメージのデータ構造です(図1)。 循環バッファ 特徴 循環バッファは以下のような利点を持っています。 「配列リスト」と同様に、高速な(オーダー O(1))ランダムアクセスが可能。 先頭および末尾への要素の追加・削

    循環バッファ
  • 待ち行列

    待ち行列(queue)とは 待ち行列をとりあえず簡単に構築する リングバッファ 待ち行列の構造体を作る レポート問題 待ち行列(queue)とは 待ち行列(キュー)も,逐次入出力が繰り返されるデータを一時的に貯えておくためのデータ構造である。なお,英語でキュー(queue)とは,レジなどで順番を待つ人の列も意味する。 待ち行列にデータを追加することを enqueue と言い,待ち行列からデータを取り出すことを dequeue と言う。待ち行列へのデータの追加取り出しは次のように行われる。 enqueue: 追加されたデータは順次,待ち行列の末尾に付け加わる。行列の長さは1だけ増える。 dequeue: データを取り出すときには,待ち行列の先頭から取り出す。行列の長さは1だけ減る。 すなわち,待ち行列から一つデータを取り出すとき,それは(残っているデータの中で)最初に追加したものである。この