顺序表中增加元素
在尾部增加元素:时间复杂度为O(1)
在任意位置插入元素:时间复杂度为O(n)
顺序表中删除元素
删除尾部元素:时间复杂度为O(1)
删除任意位置元素:时间复杂度为O(n)
PY_SSIZE_T_MAX=float('inf') #最大的容量
obj_size=1
class List:
allocated=0 #容量默认为0
size=0 #元素个数默认为0
items=[] #数据区默认为空
def list_resize(self,new_size):
'''
self:列表本身对象
:param new_size:修改之后的元素个数
:return:
'''
allocated=self.allocated #获取列表对象当前的容量
#allocated>>1==>allocated//2
if allocated>=new_size and new_size>=(allocated>>1):
self.size=new_size
return 0
#计算需要的内存容量时多少
new_allocated=new_size+(new_size>>3)+(3 if new_size<9 else 6)
if new_allocated>PY_SSIZE_T_MAX: #判断是否超过了最大值
return -1
if new_size==0:
new_allocated=0
#计算我们容量需要的字节数
num_allocated_bytes=new_allocated*obj_size
#获取到新的内存空间的地址
items=addr(self.items,num_allocated_bytes)
if items==None:
return -1
#让列表对象的数据区地址指向新的内存空间地址
self.items=items
self.size=new_size
self.allocated=allocated
lst=List()
result=lst.list_resize(4)
print(result)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74331.html