我这里有个问题,我需要做方法 pop 但我只能使用 SimpleList 中的函数,有什么想法吗?
我只能修改类 RingBuffer,所以我不能使用 remove()、pop() 等。
from typing import Optional, List
# (‹sl› is instance of ‹SimpleList›):
#
# • ‹sl.append(x)› adds to the end of list ‹x›,
# • ‹sl.get(i)› returns value of index ‹i›,
# • ‹sl.size()› returns current size of list,
# • ‹sl.set(i, x)› sets index ‹i› to value ‹x›.
class RingBuffer:
def __init__(self, size: int, storage: 'SimpleList'):
self.sl = storage
self.size = size
def push(self, value: int) -> bool:
if self.sl.size() >= self.size:
return False
else:
self.sl.append(value)
return True
# Method ‹pop› removes first value from list and returns it.
# If list is empty, method doesn't do anything and returns ‹None›.
def pop(self) -> Optional[int]:
if self.sl.size() == 0:
return None
class SimpleList:
def __init__(self) -> None:
self.__items: List[int] = []
def append(self, x: int) -> None:
self.__items.append(x)
def get(self, i: int) -> int:
return self.__items[i]
def set(self, i: int, x: int) -> None:
self.__items[i] = x
def size(self) -> int:
return len(self.__items)