python配列を使用してチェーンテーブルのポリシー分析を実現
4493 ワード
pythonチェーンテーブルデータ構造の実装:配列/ノードと参照
配列ポリシーの使用:配列を使用して、他のオブジェクトへの参照 を格納する.配列記憶空間過剰割当 配列が満たされた後、より大きな配列を割り当て、古い配列の内容を新しい配列にコピーする .
配列ポリシーの使用:
class ArrayList:
def __init__(self):
self.size_exponent = 0
self.max_size = 0 #
self.last_index = 0 #
self.my_array = [] #
#
def append(self, val):
if self.last_index > self.max_size - 1:
self.resize()
self.my_array[self.last_index] = val
self.last_index += 1
#
def insert(self, idx, val):
if self.last_index > self.max_size - 1:
self.__resize()
for i in range(self.last_index, idx - 1, -1):
self.my_array[i + 1] = self.my_array[i]
self.last_index += 1
self.my_array[idx] = val
#
def __resize(self):
new_size = 2 ** self.size_exponent
new_array = [0] * new_size
for i in range(self.max_size):
new_array[i] = self.my_array[i] #
self.max_size = new_size
self.my_array = new_array
self.size_exponent += 1
#
def __get_item__(self, idx):
if idx < self.last_index:
return self.my_array[idx]
else:
raise LookupError('index out of bounds')
#
def __set_item__(self, idx, val):
if idx < self.last_index:
self.my_array[idx] = val
else:
raise LookupError('index out of bounds')