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

力扣刷题记录---利用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>…...

如何将笔记本作为另一台电脑的副屏显示

背景说明 台式电脑一个显示器不够我使用&#xff0c;而手头又没有多的显示器。我的笔记本有屏幕&#xff0c;但是不能直接连HDMI线给台式拓展屏幕。研究一段时间后发现&#xff0c;利用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的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…...

js 四舍五入保留一位小数 求百分比

概览&#xff1a;一个数据占一组数据的比率&#xff0c;并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接&#xff1a; mdn中文文档Math.round() 实现思路&#xff1a; Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…...

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门&#xff0c;黑客在入侵了一个网站后&#xff0c;常常在将这些asp或php木马后门文件放置在网站服务器的web目录中&#xff0c;与正常…...

【组内工作】木马回联

文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程&#xff1a; C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …...

未来将会有更多基于 Cortana 的设备

在前些日子的 Build 大会首日 Keynote 中&#xff0c;微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品&#xff0c;这是继推出 Invoke 喇叭的 Harman Kardon 后&#xff0c;又有知名大牌加入到 Cortana 的阵营当中&#xff0c;有这样的品牌资源背景&#…...

嵌入式硬件系统的基本组成

嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心&#xff0c;主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼&#xff08;Von Neumann&…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...