Python数据结构(哈希表)

 

 

 

 

 

 

实现代码:

 

class linklist:
    
    class Node:
        def __init__(self,item=None):
            self.item=item
            self.next=None
    
    class linklistIterator:
        def __init__(self,node):
            self.node=node
            
        def __next__(self):
            if self.node:
                cur_node=self.node
                self.node=cur_node.next
                return cur_node.item
            else:
                raise StopIteration
        
        def __iter__(self):
            return self
        
    def __init(self,iterable=None):
        self.head=None
        self.tail=None
        if iterable:
            self.extend(iterable)
                
    def append(self,obj):
        s=linklist.Node(obj)
        if not self.head:
            self.head=s
            self.tail=s
        else:
            self.tail.next=s
            self.tail=s
        
    def extend(self,iterable):
        for obj in iterable:
                self.append(obj)
                
    def find(self,obj):
        for n in self:
            if n==obj:
                return True
            else:
                return False
        
    def __iter__(self): 
        return self.linklistIterator(self.head)
    
    def __repr__(self):
        return '<<'+','.join(map(str,self))+'>>'
    
#   类似集合的哈希结构
class HashTable:
    def __init__(self,size=101):
        self.size=size
        self.T=[linklist() for i in range(self.size)]
        
    def h(self,k):
        return k%self.size
        
    def append(self,k):
        i=self.h(k)
        if self.find(k):
            print('Duplicated Insert')
        else:
            self.T[i].append(k)
            
    def find(self,k):
        i=self.h(k)
        return self.T[i].find(k)
    

 

应用:

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_te_amo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值