力扣刷题记录---利用python实现链表的基本操作
文章目录
- 前言
- 一、利用python实现链表的基本操作
- 1.节点的定义使用类实现:
- 1.链表的定义使用类实现:
- 3.判断是否为空函数实现:
- 4.链表长度函数实现:
- 5.遍历链表函数实现:
- 6.头插法函数实现:
- 7.尾插法函数实现:
- 8.在链表指定位置插入值函数实现:
- 9.删除某一个值函数实现:
- 10查看某个节点是否存在函数实现:
前言
如何使用python实现链表的基本操作,包括结点的定义,链表的定义,求链表长度,链表是否为空等等一系列函数
提示:以下是本篇文章正文内容,下面案例可供参考
一、利用python实现链表的基本操作
链表中的节点应该包含数值和指向下一个元素的地址。
1.节点的定义使用类实现:
class Node():def __init__(self,elem):self.elem = elemself.next = None
由于python万物皆对象,变量实际上是对象的引用,相当于就保存了对象的地址
1.链表的定义使用类实现:
链表的定义如下,也是使用类实现:
class Single_LinkList():def __init__(self,node = None):self.head = node
初始化时会自动生成一个空链表,其中head指向None
3.判断是否为空函数实现:
def is_empty(self):"""链表是否为空"""if self.head == None:return Trueelse:return False
4.链表长度函数实现:
def length(self):"""链表长度"""len = 0cur = self.headwhile cur != None:len = len + 1cur = cur.nextreturn len
5.遍历链表函数实现:
def travel(self):"""遍历链表"""cur = self.headwhile cur != None:print(cur.elem)cur = cur.next
6.头插法函数实现:
def add(self,item):"""链表头部进行添加元素"""node = Node(item)node.next = self.headself.head = node
7.尾插法函数实现:
def append(self,item):"""链表尾部进行添加元素"""node = Node(item)cur = self.headif self.is_empty():self.head = nodeelse:while cur.next != None:cur = cur.nextcur.next = nodenode.next = None
8.在链表指定位置插入值函数实现:
def insert(self,pos,item):"""在指定位置上添加元素:param pos: 从0开始:param item::return:"""node = Node(item)count = 0cur = self.headwhile cur != None:if count == pos - 1:node.next = cur.nextcur.next = nodebreakcur = cur.nextcount = count + 1
9.删除某一个值函数实现:
def remove(self,item):"""删除某一个节点"""cur = self.headcount = 0if self.is_empty():print("删除失败")elif self.head.elem == item:self.head = self.head.nextelse:while cur.next != None:if cur.next.elem == item:cur.next = cur.next.nextbreakcur = cur.next
10查看某个节点是否存在函数实现:
def search(self,item):"""查看某个节点是否存在"""cur = self.headwhile cur != None:if cur.elem == item:return Truecur = cur.nextreturn False
完整代码如下:
class Node():def __init__(self,elem):self.elem = elemself.next = Noneclass Single_LinkList():def __init__(self,node = None):self.head = nodedef is_empty(self):"""链表是否为空"""if self.head == None:return Trueelse:return Falsedef length(self):"""链表长度"""len = 0cur = self.headwhile cur != None:len = len + 1cur = cur.nextreturn lendef travel(self):"""遍历链表"""cur = self.headwhile cur != None:print(cur.elem)cur = cur.nextdef add(self,item):"""链表头部进行添加元素"""node = Node(item)node.next = self.headself.head = nodedef append(self,item):"""链表尾部进行添加元素"""node = Node(item)cur = self.headif self.is_empty():self.head = nodeelse:while cur.next != None:cur = cur.nextcur.next = nodenode.next = Nonedef insert(self,pos,item):"""在指定位置上添加元素:param pos: 从0开始:param item::return:"""node = Node(item)count = 0cur = self.headwhile cur != None:if count == pos - 1:node.next = cur.nextcur.next = nodebreakcur = cur.nextcount = count + 1def remove(self,item):"""删除某一个节点"""cur = self.headcount = 0if self.is_empty():print("删除失败")elif self.head.elem == item:self.head = self.head.nextelse:while cur.next != None:if cur.next.elem == item:cur.next = cur.next.nextbreakcur = cur.nextdef search(self,item):"""查看某个节点是否存在"""cur = self.headwhile cur != None:if cur.elem == item:return Truecur = cur.nextreturn False
测试代码如下:
if __name__ == "__main__":Linklist = Single_LinkList()print(Linklist.is_empty())print(Linklist.length())print(Linklist.append(1))print(Linklist.is_empty())print(Linklist.length())print(Linklist.append(2))print(Linklist.append(3))print(Linklist.append(4))print(Linklist.append(5))Linklist.add(8)Linklist.insert(1,10)Linklist.remove(8)# Linklist.remove(8)Linklist.travel()print(Linklist.search(1))
结果如下:

相关文章:
力扣刷题记录---利用python实现链表的基本操作
文章目录 前言一、利用python实现链表的基本操作1.节点的定义使用类实现:1.链表的定义使用类实现:3.判断是否为空函数实现:4.链表长度函数实现:5.遍历链表函数实现:6.头插法函数实现:7.尾插法函数实现&…...
OpenAI重磅官宣ChatGPT安卓版本周发布,现已开启下载预约,附详细预约教程
7月22号,OpenAI 突然宣布,安卓版 ChatGPT 将在下周发布!换句话说,本周安卓版 ChatGPT正式上线! 最早,ChatGPT仅有网页版。 今年5月,iOS版ChatGPT正式发布,当时OpenAI表示Android版将…...
PHP 支付宝支付、订阅支付(周期扣款)整理汇总
最近项目中需要使用支付宝的周期扣款,整理一下各种封装方法 APP支付(服务端) /******************************************************* 调用方法******************************************************/function test_pay(){$isSubscri…...
python-pytorch基础之神经网络回归
这里写目录标题 定义数据集定义函数生成数据集 使用Dataloader加载dataset定义神经网络定义实例化查看是否是输出的一个 训练编写trian方法训练并保存模型 测试模型结果构造数据测试结论 定义数据集 import torch import random定义函数 # 生成数据 def get_rancledata():wid…...
linux中通过.desktop文件执行bash命令打开chrome浏览器并传参
.desktop 文件介绍 Ecex 参数介绍 Code 描述 %f %f指向临时文件。用于不了解URL语法的程序。 %F 文件列表。用于可以一次打开多个本地文件的应用程序。每个文件作为单独的参数传递给可执行程序。 %u 单一的URL或者本地文件 %U %u的复数 %i 如果Icon 为空,不应该填写此参数。…...
ChatGPT的应用与发展趋势:解析人工智能的新风口
目录 优势 应用领域 发展趋势 总结 在人工智能技术迅猛发展的时代,自然语言处理系统的提升一直是研究者们追求的目标。作为人工智能领域的重要突破之一,ChatGPT以其出色的语言模型和交互能力,在智能对话领域取得了重要的进展。 ChatGPT是…...
使用maven打jar包时,如何只把依赖的其它jar中的类打进jar包,没有依赖的其它jar包的类文件不打进来?
简介 使用Maven打包时,默认情况下,所有依赖的jar包都会被打包到生成的jar文件中。 如果只想将依赖的其他jar中的类文件打进来,而不包含其它jar包,可以使用Maven的 maven-shade-plugin插件进行配置。 步骤 以下是一个示例配置&…...
arm neon/fpu/mfloat
neon官网介绍: Arm Neon technology is an advanced Single Instruction Multiple Data (SIMD) architecture extension for the A-profile and R-profile processors. Neon technology is a packed SIMD architecture. Neon registers are considered as vectors of elements …...
Maven基础之项目创建、packaging
文章目录 创建 maven 项目流程骨架是浮云,packaging 是关键 创建 maven 项目流程 通过骨架(archetype)创建 maven 工程 第一步:选择 new → maven → Maven Project 第二步:New Maven Project 窗口不作任何设置&…...
c++ std::map 使用注意事项
1. std::map 如果在添加元素前,直接去取 key-value,会怎样 ? 先说答案,map 在添加元素前,直接使用会给 key 添加默认的 value! 2. 问题背景 某项目代码报出个严重的bug,具体现象是某个 map…...
Camera HAL/ISP 专业术语大全
不断更新,建议收藏,快速检索 SOC,System On Chip,片上系统 HAL,Hardware Abstraction Layer,硬件抽象层 ISP,Image Signal Processor,图像信号处理器 KMD,Kernel Mod…...
POI的简单入门
POI的简单入门 导入jar包将数据写入Excel文件读取Excel文件中的数据 导入jar包 Apache POI的maven坐标 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version> </dependency>…...
如何将笔记本作为另一台电脑的副屏显示
背景说明 台式电脑一个显示器不够我使用,而手头又没有多的显示器。我的笔记本有屏幕,但是不能直接连HDMI线给台式拓展屏幕。研究一段时间后发现,利用spacedesk软件可以基本完美解决这个问题。 效果演示 软件下载与安装 官网下载最新版(需要…...
深入理解正则表达式:为什么它在Java中如此重要?
文章目录 一、正则表达式1.1 为什么引入正则表达式1.2 什么是正则表达式 二、正则表达式规则2.1 正则表达式的基本语法规则2.2 非贪婪匹配 三、正则表达式在java中的应用3.1 String3.2 java.util.regex 参考资料 一、正则表达式 1.1 为什么引入正则表达式 在实际编写程序的过…...
jmeter实现webservice接口测试
其实可以用jmeter两种sampler进行webservice的测试: 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…...
js 四舍五入保留一位小数 求百分比
概览:一个数据占一组数据的比率,并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接: mdn中文文档Math.round() 实现思路: Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…...
文件上传漏洞总结2
文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常…...
【组内工作】木马回联
文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程: C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …...
未来将会有更多基于 Cortana 的设备
在前些日子的 Build 大会首日 Keynote 中,微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品,这是继推出 Invoke 喇叭的 Harman Kardon 后,又有知名大牌加入到 Cortana 的阵营当中,有这样的品牌资源背景&#…...
嵌入式硬件系统的基本组成
嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心,主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼(Von Neumann&…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
