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

Python - 链表浅析

Python - 链表浅析本篇用Python代码模拟链表1. 链表介绍概述链表属于数据结构之线性结构的一种每个节点都只能有1个前驱和1个后继节点。作用用于优化顺序表的弊端如果没有足够的连续的内存空间会导致扩容失败。链表扩容时有地儿就行连不连续无所谓。组成由节点组成其中节点由以下两部分组成元素域 (数值域)存储数据。链接域 (地址域)存储下一个节点的地址。分类根据节点类型不同链表主要分为单向链表节点由1个数值域和1个地址域组成前边节点的地址域存储的是后续节点的地址最后1个节点的地址域为None。单向循环链表尾节点的地址域指向头节点。双向链表节点包含前驱指针和后继指针。双向循环链表双向链表的头尾相连。2. 自定义代码模拟链表 - 思路分析NodeObj类 (节点类)item: 数值域 (元素域)next: 地址域 (链接域)LinkedList类 (链表类)属性:head: 表示头结点指向第1个节点。行为 (方法):is_empty(): 判断链表是否为空length(): 获取链表长度travel(): 遍历整个链表add(item): 链表头部添加元素append(item): 链表尾部添加元素insert(pos, item): 指定位置添加元素remove(item): 删除节点search(item): 查找节点是否存在测试: 在main模块中进行功能验证。3. 代码实现# 1. 自定义 NodeObj 类表示节点类classNodeObj:# 初始化属性def__init__(self,item):self.itemitem# 元素域 (数值域)self.nextNone# 链接域 (地址域)# 2. 自定义 LinkedList 类表示链表classLinkedList:# 1. 初始化属性def__init__(self,nodeNone):self.headnode# 链表的头结点指向第1个节点# 2. is_empty(self) 链表是否为空defis_empty(self):returnself.headisNone# 3. length(self) 链表长度deflength(self):count0curself.headwhilecurisnotNone:count1curcur.nextreturncount# 4. travel(self) 遍历整个链表deftravel(self):curself.head items[]whilecurisnotNone:items.append(str(cur.item))curcur.nextprint( - .join(items))# 5. add(self, item) 链表头部添加元素defadd(self,item):头部插入时间复杂度 O(1)nodeNodeObj(item)node.nextself.head self.headnode# 6. append(self, item) 链表尾部添加元素defappend(self,item):尾部追加时间复杂度 O(n)nodeNodeObj(item)ifself.is_empty():self.headnodeelse:curself.headwhilecur.nextisnotNone:curcur.nextcur.nextnode# 7. insert(self, pos, item) 指定位置添加元素definsert(self,pos,item): :param pos: 从0开始索引 :param item: 插入的数据 ifpos0:self.add(item)elifpos(self.length()-1):self.append(item)else:nodeNodeObj(item)count0preself.head# 移动到 pos 位置的前一个节点whilecount(pos-1):count1prepre.next# 执行插入node.nextpre.nextpre.nextnode# 8. remove(self, item) 删除节点defremove(self,item):curself.head preNonewhilecurisnotNone:ifcur.itemitem:# 判断是否是头结点ifpreisNone:self.headcur.nextelse:pre.nextcur.nextreturnTrue# 删除成功else:precur curcur.nextreturnFalse# 未找到# 9. search(self, item) 查找节点是否存在defsearch(self,item):curself.headwhilecurisnotNone:ifcur.itemitem:returnTruecurcur.nextreturnFalse# 3. 在 main 中测试if__name____main__:print(--- 测试节点类 ---)# 3.1 测试节点类node1NodeObj(10)# 3.2 打印当前节点的 元素域 (数值域) 和 链接域 (地址域)print(f元素域 (数值域):{node1.item})# 10print(f链接域 (地址域):{node1.next})# Noneprint(fnode1 对象:{node1})# 地址值print(fnode1 的类型:{type(node1)})print(-*20)print(\n--- 测试链表类 ---)# 3.2 测试链表类my_linkedlistLinkedList(node1)print(f头结点为{my_linkedlist.head})print(f头结点的元素域{my_linkedlist.head.item})# 10print(f头结点的地址域{my_linkedlist.head.next})# Noneprint(\n--- 功能测试 ---)# 测试是否为空print(f链表是否为空{my_linkedlist.is_empty()})print(f链表长度{my_linkedlist.length()})# 遍历print(当前链表内容,end)my_linkedlist.travel()# 头部添加my_linkedlist.add(20)print(头部添加 20 后,end)my_linkedlist.travel()# 尾部添加my_linkedlist.append(30)print(尾部添加 30 后,end)my_linkedlist.travel()# 指定位置插入my_linkedlist.insert(1,25)print(位置 1 插入 25 后,end)my_linkedlist.travel()# 查找print(f查找 25 是否存在{my_linkedlist.search(25)})print(f查找 100 是否存在{my_linkedlist.search(100)})# 删除my_linkedlist.remove(25)print(删除 25 后,end)my_linkedlist.travel()print(f最终链表长度{my_linkedlist.length()})

相关文章:

Python - 链表浅析

Python - 链表浅析 本篇用Python代码模拟链表 1. 链表介绍 概述 链表属于数据结构之 线性结构 的一种,每个节点都只能有 1个前驱 和 1个后继 节点。 作用 用于优化顺序表的弊端(如果没有足够的连续的内存空间,会导致扩容失败)。链…...

Qwen3.5-9B开源镜像保姆级教程:从pull到Gradio访问全流程

Qwen3.5-9B开源镜像保姆级教程:从pull到Gradio访问全流程 1. 前言:为什么选择Qwen3.5-9B Qwen3.5-9B是当前开源大模型领域的一颗新星,它在多个关键性能指标上超越了前代产品。作为一款多模态模型,它不仅能处理文本任务&#xff…...

分布式控制系统(DCS)安装:从方案设计到投运验收的完整指南

一、什么是分布式控制系统(DCS)安装分布式控制系统(Distributed Control System,简称 DCS)是一种面向流程工业的自动化控制平台,通常由操作员站、工程师站、控制器、I/O 模块、历史数据库、网络交换设备、现…...

【硬核裁剪手册】:基于ARM Cortex-M3/M4架构的RTOS内核最小化实践,含11项裁剪Checklist与编译时断言验证模板

第一章:RTOS内核裁剪的底层逻辑与ARM Cortex-M3/M4架构约束RTOS内核裁剪并非简单的功能开关,而是对调度器、中断管理、内存模型与硬件抽象层(HAL)之间耦合关系的深度解耦过程。其底层逻辑根植于嵌入式系统资源确定性与实时性保障的…...

Z-Image-GGUF新手必看:阿里通义模型提示词编写技巧与示例

Z-Image-GGUF新手必看:阿里通义模型提示词编写技巧与示例 1. 认识Z-Image-GGUF模型 1.1 什么是Z-Image-GGUF Z-Image-GGUF是阿里巴巴通义实验室开源的一款文生图AI模型,采用GGUF量化技术,能够在较低显存环境下运行。这个模型可以将文字描述…...

零基础学Python环境管理:Miniconda-Python3.8镜像保姆级入门指南

零基础学Python环境管理:Miniconda-Python3.8镜像保姆级入门指南 你是不是也遇到过这样的烦恼?想在自己的电脑上跑一个AI项目,结果光是安装Python和各种库就折腾了一整天,最后还因为版本冲突报了一堆错。或者,你需要在…...

CHORD-X在网络安全领域的应用:威胁情报自动分析与汇总报告生成

CHORD-X在网络安全领域的应用:威胁情报自动分析与汇总报告生成 1. 引言:当安全警报淹没你的收件箱 每天早上九点,安全分析师小李打开电脑,面对的是上百封未读邮件:CVE漏洞公告、防火墙告警、入侵检测系统日志、威胁情…...

释放90%存储空间的ComfyUI资源优化与性能提升指南:5步实现系统轻量化

释放90%存储空间的ComfyUI资源优化与性能提升指南:5步实现系统轻量化 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI作为强大的开源AI工作流工具,随着使用时间增长,自定义节…...

【Python】学习笔记 - P2

【Python】学习笔记 - P21. 字符串str定义和切片1.1 定义方式1.2 切片方式1.3 字符串的相关方法1.3.1 查找1.3.2 修改2. 列表list及其应用场景2.1 列表的定义2.2 列表的相关操作2.1.1 增加2.1.2 查找2.1.3 删除2.1.4 修改2.3 列表的循环遍历1. 字符串str定义和切片 1.1 定义方…...

小白也能玩转AI看图说话:OFA图像描述镜像一键部署教程

小白也能玩转AI看图说话:OFA图像描述镜像一键部署教程 1. 从零开始:什么是AI看图说话? 你有没有想过,给电脑看一张照片,它就能像人一样,把照片里的内容用文字描述出来?听起来很科幻&#xff0…...

Qt界面美化实战:QTreeView/QTreeWidget样式全解析(附完整QSS代码)

Qt界面美化实战:QTreeView/QTreeWidget样式全解析(附完整QSS代码) 在桌面应用开发中,界面美观度直接影响用户体验。Qt作为跨平台框架,其树形控件(QTreeView/QTreeWidget)常用于展示层级数据&…...

Qwen-Image镜像实操手册:免配置加载通义千问视觉模型,支持多轮图文问答

Qwen-Image镜像实操手册:免配置加载通义千问视觉模型,支持多轮图文问答 1. 镜像概述与核心价值 Qwen-Image定制镜像是专为RTX 4090D GPU环境优化的大模型推理解决方案,预装了完整的CUDA 12.4工具链和通义千问视觉语言模型(Qwen-VL)所需的所…...

Astra Pro相机+YOLOv5+ROS2保姆级教程:用ELF2开发板搭建实时目标检测系统

基于ELF2开发板与Astra Pro相机的实时目标检测系统实战指南 在边缘计算与计算机视觉融合的浪潮中,如何将高性能AI模型部署到资源受限的嵌入式设备,一直是开发者面临的挑战。本文将手把手带您实现一套基于Rockchip RK3588芯片的ELF2开发板与Astra Pro深度…...

5分钟部署Qwen3-1.7B:跟着教程一步步来,轻松搭建AI对话机器人

5分钟部署Qwen3-1.7B:跟着教程一步步来,轻松搭建AI对话机器人 1. 快速了解Qwen3-1.7B Qwen3-1.7B是阿里巴巴开源的通义千问大语言模型系列中的一员,这个1.7B参数的版本非常适合个人开发者和中小团队使用。它具备以下特点: 轻量…...

OpenClaw + ESP32 ,这只小龙虾你不来看看吗?

OpenClaw 一定要跑在电脑或者服务器上吗?前两天刷到一个开源项目 MimiClaw,把 OpenClaw 塞进了一块 ESP32-S3 开发板,成本不超过 30,用纯 C 写成,不需要 Linux,不需要 Node.js,插上 USB 就跑&am…...

Qwen3.5-9B企业应用:制造业设备图像故障识别+自然语言报告生成

Qwen3.5-9B企业应用:制造业设备图像故障识别自然语言报告生成 1. 项目概述 在制造业生产线上,设备故障的快速识别与诊断一直是影响生产效率的关键因素。传统的人工巡检方式不仅耗时费力,而且对技术人员的经验要求极高。Qwen3.5-9B模型为解决…...

Cosmos-Reason1-7B模型在互联网产品需求分析与PRD撰写中的应用

Cosmos-Reason1-7B模型在互联网产品需求分析与PRD撰写中的应用 1. 引言 你有没有过这样的经历?脑子里突然冒出一个产品想法,感觉特别棒,恨不得马上动手开发。但当你坐下来,想把这个想法写成一个清晰的需求文档时,却卡…...

普林斯顿大学新方法:不到10美元就能让强化学习训练提速万倍

这项由普林斯顿大学计算机科学系领导的突破性研究发表于2026年3月的arXiv预印本平台(论文编号:2603.12145v1),彻底改变了强化学习环境优化的游戏规则。在人工智能训练中,环境模拟一直是个巨大的瓶颈,就像一…...

uview1.0踩坑记录:u-input禁用后click事件失效的3种解决方案(附代码)

uview1.0实战:解决u-input禁用状态下click事件失效的深度方案 最近在开发基于uview1.0的项目时,遇到了一个棘手的问题:当u-input组件处于禁用状态时,部分Android机型上的click事件完全失效。这个问题不仅影响了用户体验&#xff0…...

三万卡集群用的国产自研网络,到底解决了什么问题?

前几天看到有同行分享了参观中科曙光郑州三万卡集群的经历,提到一个细节:那个集群用的是自研的ScaleFabric400网络,交换机80个口,网卡支持856K个队列对。这两个数字让很多人感兴趣,它们到底意味着什么?结合…...

fft npainting lama图片修复:快速修复图片瑕疵,提升工作效率

fft npainting lama图片修复:快速修复图片瑕疵,提升工作效率 1. 为什么你需要这个图像修复工具 在日常工作和生活中,我们经常会遇到需要修复图片的情况。无论是电商运营需要去除商品图片上的水印,还是摄影师想要移除照片中的干扰…...

首尔大学突破:多摄像机一秒实现真实世界三维场景重建

这项由首尔大学和NAVER Cloud联合完成的研究发表于2026年3月,论文编号为arXiv:2603.12789v2,完整题目为"Coherent Human-Scene Reconstruction from Multi-Person Multi-View Video in a Single Pass"。对于想要深入了解技术细节的读者&#x…...

Hot100中的:图论专题

图模板 图分为有向图和无向图,入度是指向当前节点的边数,出度是当前节点指向其他节点的边数200.岛屿数量 关键信息一句话总结:遍历网格,遇到陆地就用 DFS / BFS 把整块连通陆地淹掉,并计数方法1:BFS class …...

NotaGen完整流程:生成、保存、编辑,一站式AI音乐创作

NotaGen完整流程:生成、保存、编辑,一站式AI音乐创作 1. 引言:AI音乐创作的新范式 音乐创作一直是人类独有的艺术表达方式,而AI技术的进步正在改变这一格局。NotaGen作为基于LLM范式的符号音乐生成工具,将古典音乐创…...

Altium Designer 13.1实战:从零开始绘制Lemo连接器封装(附常见错误解析)

Altium Designer 13.1实战:从零开始绘制Lemo连接器封装(附常见错误解析) 在电子设计领域,元件封装的准确性直接决定了PCB设计的成败。作为硬件工程师的基本功,封装绘制看似简单却暗藏玄机。本文将带您深入Altium Desig…...

Alibaba DASD-4B Thinking 对话工具 AIGC 内容创作实战:从文案到多模态内容规划

Alibaba DASD-4B Thinking 对话工具 AIGC 内容创作实战:从文案到多模态内容规划 1. 引言:当创意遇上智能助手 你有没有过这样的经历?面对空白的文档,脑子里有无数想法在打转,却不知道从何下笔。想写一篇吸引人的产品…...

如何通过Legacy-iOS-Kit让旧iOS设备重获新生:从卡顿困境到高效重生的完整指南

如何通过Legacy-iOS-Kit让旧iOS设备重获新生:从卡顿困境到高效重生的完整指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Lega…...

RexUniNLU效果展示:真实案例解析新闻事件结构化

RexUniNLU效果展示:真实案例解析新闻事件结构化 1. 新闻结构化处理的行业痛点 1.1 传统新闻处理的效率瓶颈 在新闻媒体和舆情监测领域,每天需要处理海量非结构化文本数据。以某省级融媒体中心为例,其每日需要分析的新闻稿件超过2000篇&…...

多动症孩子的运动干预是什么?主要有怎样的方法?

学校如何有效识别与诊断多动症孩子的ADHD症状表现 在学校环境中,及时有效地识别多动症(ADHD)儿童的症状至关重要。教师应关注孩子在课堂上的表现,例如是否经常出现注意力不集中、难以完成作业或经常打断他人。常见的ADHD症状表现还…...

Qwen3-32B-Chat在RTX4090D上的GPU算力极致优化:FlashAttention-2加速推理实操

Qwen3-32B-Chat在RTX4090D上的GPU算力极致优化:FlashAttention-2加速推理实操 1. 开箱即用的私有部署方案 Qwen3-32B作为当前最强大的开源大语言模型之一,其32B参数的规模对硬件提出了极高要求。我们针对RTX4090D显卡24GB显存特性,推出了深…...