python链表法的优缺点

1、优点,方便删除记录,直接处理数组对应下标的子数组。平均搜索速度快。如果有冲突,只需要查询子数组。

2、缺点,使用指针导致查询速度较慢,内存占用可能较高,不适合序列化。

而开放式寻址法的优缺点与链表法相反。因为Python的一切都是基于Dict的,都需要序列化,所以选择了开放式寻址法。

实例

#keys函数
#!/usr/bin/envpython
#coding=utf-8

classDict:
def__init__(self,num):
self.__solts__=[]
self.num=num
for_inrange(num):
self.__solts__.append([])
defhash_fun(self,key,num):
hashval=0
x=key
ifx<0:
print"thekeyislow"
return
whilex!=0:
hashval=(hashval<<3)+x%10
x/=10
returnhashval%num
defput(self,key,value):
i=self.hash_fun(key,self.num)%self.num
forp,(k,v)inenumerate(self.__solts__[i]):
ifk==key:
break
else:
self.__solts__[i].append((key,value))
return
self.__solts__[i][p]=(key,value)
defget(self,key):
i=self.hash_fun(key,self.num)%self.num
fork,vinself.__solts__[i]:
ifk==key:
returnv
raiseKeyError(key)
#keys函数
defkeys(self):
ret=[]
forsoltinself.__solts__:
fork,_insolt:
ret.append(k)
returnret
def__getitem__(self,key):
returnself.get(key)

def__setitem__(self,key,data):
self.put(key,data)
H=Dict(13)
H[54]="cat"
H[26]="dog"
H[93]="lion"
H[17]="tiger"
H[77]="bird"
H[31]="cow"
H[44]="goat"
H[55]="pig"
H[20]="chicken"
printH.get(54)
H.put(13,"duck")
printH.__solts__
printH.keys()

以上就是python链表法的优缺点,希望对大家有所帮助。更多Python学习指路:Python基础教程

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。