千家信息网

python链表法的优缺点有哪些

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了python链表法的优缺点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、优点,方便删除记录,直接处理数组对
千家信息网最后更新 2025年01月21日python链表法的优缺点有哪些

这篇文章主要介绍了python链表法的优缺点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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

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

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

实例

   # keys函数#!/usr/bin/env python# coding=utf-8 class Dict:    def __init__(self, num):        self.__solts__ = []        self.num = num        for _ in range(num):            self.__solts__.append([])    def hash_fun(self,key,num):        hashval = 0        x = key        if x < 0:                print "the key is low"                return        while x != 0:                hashval = (hashval << 3) + x                x /=10        return hashval % num    def put(self, key, value):        i = self.hash_fun(key,self.num) % self.num        for p, (k, v) in enumerate(self.__solts__[i]):            if k == key:                break        else:            self.__solts__[i].append((key, value))            return        self.__solts__[i][p] = (key, value)    def get(self, key):        i = self.hash_fun(key,self.num) % self.num        for k, v in self.__solts__[i]:            if k == key:                return v        raise KeyError(key)    # keys函数    def keys(self):        ret = []        for solt in self.__solts__:            for k, _ in solt:                ret.append(k)        return ret    def __getitem__(self,key):        return self.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"print H.get(54)H.put(13,"duck")print H.__solts__print H.keys()

感谢你能够认真阅读完这篇文章,希望小编分享的"python链表法的优缺点有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0