通过以下代码示例,可以实现一个能够存储任意数据类型的环形缓冲区。该缓冲区可以在循环读写数据时保持数据的顺序和完整性。使用该代码,您可以轻松地在各种应用中实现环形缓冲区功能。
代码示例:
class CircularBuffer:
def __init__(self, capacity):
self.capacity = capacity
self.buffer = [None] * capacity
self.head = 0
self.tail = 0
self.size = 0
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size == self.capacity
def enqueue(self, data):
if self.is_full():
self.dequeue()
self.buffer[self.head] = data
self.head = (self.head + 1) % self.capacity
self.size += 1
def dequeue(self):
if self.is_empty():
return None
data = self.buffer[self.tail]
self.buffer[self.tail] = None
self.tail = (self.tail + 1) % self.capacity
self.size -= 1
return data
def get_data(self):
data = []
index = self.tail
for _ in range(self.size):
data.append(self.buffer[index])
index = (index + 1) % self.capacity
return data
# 可以根据需要修改缓冲区的容量
buffer = CircularBuffer(10)
buffer.enqueue("数据1")
buffer.enqueue(123)
buffer.enqueue([1, 2, 3])
buffer.enqueue({"key": "value"})
print(buffer.get_data()) # 输出:['数据1', 123, [1, 2, 3], {'key': 'value'}]
暂无评论