您现在的位置是:课程教程文章

python链表法的优缺点

2023-12-13 23:31课程教程文章 人已围观

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基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

课程教程:python链表法的优缺点

上一篇:python有序Dict的原理

下一篇:没有了

站点信息

  • 文章统计篇文章