リングバッファ作ってみた
30分プログラム、その616。Pythonでリングバッファ作ってみた。
Cの宿題/未分類 - C/C++の宿題を片付けます@wiki - アットウィキにインスパイアされて、リングバッファを実装してみました。
使い方
q = RingBuffer(4) q.add(10) q.add(11) q.add(12) q.add(13) print q.get() print q.get() print q.get() print q.get() print q.get()
ソースコード
#! /usr/bin/python # -*- mode:python; coding:utf-8 -*- # # ring.py - # # Copyright(C) 2009 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2009/07/06 21:25:02 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # class RingBuffer: def __init__(self,size): self.buffer = [None for i in xrange(0,size)] self.start = 0 self.end = 0 def add(self,val): self.buffer[self.end] = val self.end = (self.end + 1) % len(self.buffer) def get(self): val = self.buffer[self.start] self.start =(self.start + 1) % len(self.buffer) return val def __len__(self): return self.end - self.start