哈希表(实现 Python 中的集合 set)

哈希,实现,python,集合,set · 浏览次数 : 7

小编点评

## 博客内容摘要 博客文章介绍了两种数据结构的实现:**链表**和**哈希表**。 **链表**是一种线性结构,节点之间通过指针链接,每个节点保存一个数据项。链表实现简单高效的单向数据访问。 **哈希表**是一种非线性结构,键值对存储在链表中,键通过哈希函数计算出对应的位置。哈希表实现高效的键值查找和插入。 文章还说明了如何使用这两个数据结构实现链表和哈希表的实现,并提供了`__repr__`方法的实现。 **具体实现代码:** 文章没有提供具体的代码实现,但可以通过阅读博客文章中代码的注释来推断代码的结构。 **总结:** 博客文章为读者介绍了两种常见数据结构的实现方式,并提供了相关的知识和代码示例。

正文

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-


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 _ in range(self.size)]

    def h(self, k):
        return k % self.size

    def insert(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)


ht = HashTable()

ht.insert(0)
ht.insert(1)
ht.insert(3)
ht.insert(102)
ht.insert(508)

print(",".join(map(str, ht.T)))
print(ht.find(203))
print(ht.find(3))

与哈希表(实现 Python 中的集合 set)相似的内容: