当前位置: 首页 > 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一起进步吧!!!

相关文章:

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

文章目录 链表python实现双向链表复杂度分析 哈希表&#xff08;散列表&#xff09;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…...

如何使用Python对Excel、CSV文件完成数据清洗与预处理?

在数据分析和机器学习项目中&#xff0c;数据清洗与预处理是不可或缺的重要环节。 现实世界中的数据往往是不完整、不一致且含有噪声的&#xff0c;这些问题会严重影响数据分析的质量和机器学习模型的性能。 Python作为一门强大的编程语言&#xff0c;提供了多种库和工具来帮…...

第8篇:网络安全基础

目录 引言 8.1 网络安全的基本概念 8.2 网络威胁与攻击类型 8.3 密码学的基本思想与加密算法 8.4 消息认证与数字签名 8.5 网络安全技术与协议 8.6 总结 第8篇&#xff1a;网络安全基础 引言 在现代信息社会中&#xff0c;计算机网络无处不在&#xff0c;从互联网到局…...

Flutter 中的 PopScope 小部件:全面指南

Flutter 中的 PopScope 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;导航和路由管理是构建复杂应用时必须面对的挑战之一。PopScope 小部件是 Flutter 2.0 版本引入的一个新功能&#xff0c;它提供了一种更灵活的方式来控制页面的弹出和返回行为。本文将带你…...

视频剪辑的未来

技术发展推动4&#xff1a; 人工智能与自动化辅助&#xff1a;人工智能在视频剪辑中的应用将不断深化。例如&#xff0c;智能剪辑软件能够自动分析视频素材的内容、情感和节奏&#xff0c;快速生成初步的剪辑版本&#xff0c;剪辑师在此基础上进行进一步的优化和调整&#xff0…...

通过PHP与API的结合,开启电商数据集成的新篇章

在数字化转型的浪潮中&#xff0c;电子商务数据的集成对于企业来说变得越来越重要。无论是在线零售商还是品牌商&#xff0c;都需要实时访问商品数据以优化库存管理、制定定价策略、提升客户体验。PHP&#xff0c;作为服务端脚本语言的佼佼者&#xff0c;为开发者提供了强大的工…...

使用 CDN 后 Apache 的日志记录客户真实 IP

经常搭建网站服务器的都知道&#xff0c;在给站点使用了 CDN 后 Web 应用的日志记录里就会只记录 CDN 节点 IP 了&#xff0c;这就没法看到真实客户请求 IP&#xff0c;对于日志分析、运维日常维护来说就有点儿麻烦了&#xff0c;今天明月结合在五洛云服务器上搭建的Apache环境…...

ORACLE 19C安装 RAC报错

1. 问题描述 在Oracle 19C RAC的安装过程中&#xff0c;使用克隆方式在两个节点上部署集群。当第一个节点配置好基础服务后&#xff0c;关机并克隆节点。当尝试在第二个节点上通过页面进行RAC安装时&#xff0c;出现以下错误&#xff1a; [INS-32070] Could not remove the n…...

省心英语 3.9.9| 资源最全面的英语学习App

省心英语是一款资源全面的英语学习软件&#xff0c;完全免费且无广告&#xff0c;内含丰富的词库和范文、中小学、四六级、考研、专四专八、雅思托福、新概念等所有阶段的学习内容。软件支持练听力、背单词、阅读理解等功能&#xff0c;覆盖了听说读写全方位学习。听力部分包含…...

ruoyi框架动态切换数据库

需求背景 最近需要一个小demo,项目中需要同时连接sqlserver和mysql数据库。 操作教程 1、pom.xml -- 修改common/pom.xml<!-- 动态数据源 --> <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-star…...

iba Data Export 导出面板选项

时间线选择真实时间“Absolute date / time” 时间间隔选择0.5Sec.&#xff08;最小为0.01Sec.&#xff09; 右侧数据根据需要选择...

过滤器Filter的介绍和使用

1.简介 在 Java Web 开发中&#xff0c;Filter 是一个非常重要的组件&#xff0c;用于在请求到达 Servlet 之前或响应返回客户端之前对请求和响应进行预处理或后处理。Filter 可以用来实现多种功能&#xff0c;如日志记录、权限检查、编码转换、请求头修改等。就好比机场的层层…...

JMeter之mqtt-jmeter 插件介绍

前言 mqtt-jmeter插件是JMeter中的一个第三方插件&#xff0c;用于支持MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议的性能测试。MQTT是一种轻量级的发布/订阅消息传输协议&#xff0c;广泛应用于物联网和传感器网络中。 一、安装插件 mqtt-jmeter项目…...

Nacos2.3.2在ubuntu中的部署

Nacos2.3.2 在ubuntu下的部署 下载地址 发布历史 | Nacos 官网 https://download.nacos.io/nacos-server/nacos-server-2.3.2.zip 修改 application.properties文件 开启鉴权 ### 开启鉴权功能 nacos.core.auth.caching.enabledtrue ### The auth system to use, current…...

Xilinx远程固件升级(一)——QuickBoot方案

Xilinx 7系FPGA远程更新方案——QuickBoot方式远程更新bit 一、远程更新背景和架构 对于非ZYNQ系列的常规FPGA来说&#xff0c;对于bit的更新一般使用JTAG进行烧录。而作为商用产品&#xff0c;想要进行OTA升级时&#xff0c;使用JTAG的升级方式显然不适合&#xff0c;因此&a…...

O(1)调度算法与CFS

目录 引言 linux内核的O&#xff08;1&#xff09;进程调度算法介绍 主要特点 工作原理 优点 缺点 运行队列 活动队列 过期队列 active指针和expired指针 O(1)调度器&#xff0c;两个队列的机制 两个队列的机制如下&#xff1a; 这个算法后期被CFS替代 CFS 工作原…...

SpringBoot——静态资源访问的四种方式

1.默认的静态资源目录 /static /public /resources /META-INF/resources 动态资源目录&#xff1a;/templates 2.resources静态资源目录图片存放 3. 静态资源访问 3.1.通过路径访问静态资源 http://localhost:8080/a.jpg http://localhost:8080/b.jpg …...

WPF中的Style如何使用

在 WPF 中&#xff0c;Style 是一个非常重要的概念&#xff0c;它用于定义控件的默认外观和行为。以下是如何使用 Style 的一些基本步骤和示例&#xff1a; 1. 定义 Style 资源 通常在 XAML 的资源部分&#xff08;ResourceDictionary&#xff09;中定义样式。 2. 指定 Targ…...

数据分析案例-欺诈性电子商务交易数据集可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

java互联网医院智能导诊系统源码,Uniapp前端开发框架,支持一次编写,多端运行

智慧导诊系统源码&#xff0c;java源码&#xff0c;大屏机自动导诊&#xff0c;互联网医院智能导诊系统源码 老是全身无力&#xff0c;挂什么科&#xff1f; 经常头痛&#xff0c;挂什么科&#xff1f; 总是失眠&#xff0c;又得挂哪个科&#xff1f; 世界上最遥远的距离再加…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符&#xff0c;最后运行&#xff1a;npm run lint --fix...