当前位置: 首页 > news >正文

数据结构——链表,哈希表

文章目录

    • 链表
      • python实现
      • 双向链表
      • 复杂度分析
    • 哈希表(散列表)
      • python实现哈希表
      • 哈希表的应用

链表

python实现

class Node:def __init__(self, item):self.item = itemself.next = Nonedef head_create_linklist(li):head = Node(li[0])for element in li[1:]:node = Node(element)node.next = headhead = nodereturn headdef tail_create_linklist(li):head = Node(li[0])tail = headfor element in li[1:]:node = Node(element)tail.next = nodetail = nodereturn headdef print_linklist(lk):while lk:print(lk.item, end=',')lk = lk.nextprint()a = head_create_linklist([1, 2, 3, 4, 5, 6, 7, 8])
b = tail_create_linklist([1, 2, 3, 4, 5, 6, 7, 8])
print_linklist(a)
print_linklist(b)

双向链表

在这里插入图片描述

在这里插入图片描述

复杂度分析

在这里插入图片描述

哈希表(散列表)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

python实现哈希表

class LinkList:class Node:def __init__(self, item=None):self.item = itemself.next = Noneclass LinkListIterator:def __init__(self, node):self.node = nodedef __next__(self):if self.node:cur_node = self.nodeself.node = cur_node.nextreturn cur_node.itemelse:raise StopIterationdef __iter__(self):return selfdef __init__(self, iterable=None):self.head = Noneself.tail = Noneif iterable:self.extend(iterable)def append(self, obj):s = LinkList.Node(obj)if not self.head:self.head = sself.tail = selse:self.tail.next = sself.tail = sdef extend(self, iterable):for obj in iterable:self.append(obj)def find(self, obj):for n in self:if n == obj:return Trueelse:return Falsedef __iter__(self):return self.LinkListIterator(self.head)def __repr__(self):return "<<" + ", ".join(map(str, self)) + ">>"# 类似于集合的结构
class HashTable:def __init__(self, size=101):self.size = sizeself.T = [LinkList() for i in range(self.size)]def h(self, k):return k % self.sizedef 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)
ht.insert(19)
ht.insert(56)
ht.insert(96)print(",".join(map(str, ht.T)))
print(ht.find(203))

哈希表的应用

在这里插入图片描述

在这里插入图片描述

若有错误与不足请指出,关注DPT一起进步吧!!!

http://www.lryc.cn/news/464418.html

相关文章:

  • 如何使用Python对Excel、CSV文件完成数据清洗与预处理?
  • 第8篇:网络安全基础
  • Flutter 中的 PopScope 小部件:全面指南
  • 视频剪辑的未来
  • 通过PHP与API的结合,开启电商数据集成的新篇章
  • 使用 CDN 后 Apache 的日志记录客户真实 IP
  • ORACLE 19C安装 RAC报错
  • 省心英语 3.9.9| 资源最全面的英语学习App
  • ruoyi框架动态切换数据库
  • iba Data Export 导出面板选项
  • 过滤器Filter的介绍和使用
  • JMeter之mqtt-jmeter 插件介绍
  • Nacos2.3.2在ubuntu中的部署
  • Xilinx远程固件升级(一)——QuickBoot方案
  • O(1)调度算法与CFS
  • SpringBoot——静态资源访问的四种方式
  • WPF中的Style如何使用
  • 数据分析案例-欺诈性电子商务交易数据集可视化分析
  • java互联网医院智能导诊系统源码,Uniapp前端开发框架,支持一次编写,多端运行
  • 公交线路查询web管理系统||公交线路查询|基于SprinBoot+vue公交线路查询系统(源码+数据库+文档)
  • AI对于智能网联汽车发展路径的演化的助力
  • linux java17 - linux环境 centos7卸载java8安装java17
  • 高中数学:立体几何-外接球的外心法
  • 【Python-AI篇】人工智能python基础-计算机组成原理
  • Java Exercise
  • 滚雪球学Redis[9.1讲]:Redis的常见问题与最佳实践
  • python获取当前鼠标位置的RGB值
  • Ubuntu20.04运行深蓝运动规划hw_5
  • 删除node_modules文件夹
  • 基于Springboot+Vue的民宿管理系统(含源码数据库)