备战蓝桥杯Day17 - 链表

链表

基本概念

链表是由一系列节点组成的元素集合。

每个节点包含两部分:数据域 item 、指向下一个节点的指针 next

通过节点之间的相互链接,形成一个链表

1. 链表的初始化

# 手动建立链表
# 链表的初始化
class Node(object):def __init__(self, item):self.item = itemself.next = next# 手动添加链表中的数据
a = Node(1)
b = Node(2)
c = Node(3)
d = Node(4)
# 将节点之间链接起来
a.next = b
b.next = c
c.next = d
# 可通过指针输出想要的数据
print(a)  # 1
print(a.next)  # 2
print(a.next.next)  # 3
print(a.next.next.next)  # 4 

手动添加数据的方式我们不怎么用,有专门的创建链表的方法 ,手动创建我们只需知道了解即可。

2.创建链表

(1).头插法

先把新的节点连到头节点(head)前面

 再把头节点head挪到这个新的元素上

代码实现
def creat_linklist_head(li):head = Node(li[0])   # 将列表中的第一个元素设为头节点for element in li[1:]:   # 循环遍历链表node = Node(element)  # 将链表中的元素设置为一个节点node.next = head   # 将元素直接插到头节点的前面head = node   # 再将头节点直接挪到前面return head   # 返回头节点

(2).尾插法 

 将尾指针指向下一个元素。

 再把尾指针先后挪。

代码实现
def creat_linklist_tail(li):head = Node(li[0])  # 将列表中的第一个元素设为头节点tail = head  # 当一开始只有一个节点的时候,头节点和尾节点是同一个for element in li[1:]:  # 循环遍历列表读取数据node = Node(element)   # 将列表中的元素设置为一个节点tail.next = node  # 将尾指针指向新添加的元素tail = node  # 尾指针向后移,移到最后一个元素上return head  # 返回头节点

3.遍历链表

当链表不为空时,直接循环打印当前元素,并不断指向下一个。

def print_linklist(lk):while lk:print(lk.item, end=" ")lk = lk.next# 集合尾插法进行测试
lk = creat_linklist_tail([1,2,3,4])
print_linklist(lk)

运行后可以正常给出遍历结果,但是我不理解他为什么会报错,我跟着视频中教程敲得代码,人家没报错为什么我的报错。等我研究研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[图论] 树上不重复权值的路径数

解题思路 整体思路,枚举路径上每个点,记录这个点 u 可以向上延伸到多远,如果可延伸到 x 点,则这个点对答案的贡献为 dep[u] - dep[x](下文的maxx) 1 为什么枚举是向上延伸?因为可以记录已走过路径中已有的权值&…

【k8s配置与存储--配置管理】

1、ConfigMap的配置 1.1 ConfigMap介绍 ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和容器镜像解耦,便于应用配…

STM32 I2C学习

IIC总线协议介绍 IIC:Inter Integrated Circuit,集成电路总线,是一种同步、串行、半双工通信总线。 同步:需要时钟线 串行:数据一位一位地发送 半双工:同一时间只能接受或发送,不能同时发送或…

input框 自动获取焦点

<el-input style"width:200px" autofocus v-model"leftListname"></el-input> element-ui 的 el-input 组件的 autofocus 属性在某些情况下不能实现自动聚焦,有几个可能的原因: 1. autofocus 在移动设备上不被支持。如果是在移动设备上访问,au…

Redis 发布订阅详解

Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。 Redis 有两种发布订阅模式 基于频道&#xff08;Channel&#xff09;的发布订阅基于模式&#xff…

ChatGPT学习第三周

&#x1f4d6; 学习目标 ChatGPT在各行各业的应用 探索ChatGPT在不同领域&#xff08;如教育、客户服务等&#xff09;的实际应用案例。 ChatGPT的局限性和挑战 讨论ChatGPT面临的挑战&#xff0c;包括偏见、误解及其限制。 ✍️ 学习活动 学习资料 《人工智能通用大模型(…

Vue3学习——路由prop配置、replace

写法一 在路由中可直接写prop: true&#xff0c;即可在页面中defineProps使用 相当于&#xff08;<Detail id“1” name“2” />&#xff09;,但只能是params {path: /service,name: 服务,component: () > import(../views/Service/index)&#xff0c;props: true}…

SQLlabs46关

看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username&#xff1a; passward 可以看到顺序是不同的&#xff0c;当然第一列第二列第三列也可以&#xff0c;基本上都是这个原理&#xff0c;那怎么去实现注入呢&#xff0c;我…

本地复制文本无法在Ubuntu终端中粘贴问题

在公司&#xff0c;安装Ubuntu环境后无法粘贴。 查询并自己实践后&#xff0c;解决方法如下&#xff1a; 1. sudo apt-get autoremove open-vm-tools 2. sudo apt-get install open-vm-tools-desktop 3.重启虚拟机 又可以愉快的复制粘贴了

【GPTs分享】GPTs分享之Write For Me

Write For Me 是一个专门定制的GPT版本&#xff0c;旨在为用户提供高质量的文本内容创作服务。它适用于各种写作需求&#xff0c;从商业计划、学术文章到创意故事等。下面是从简介、主要功能、使用案例、优点和局限性几个方面对Write For Me 的详细介绍。 简介 Write For Me …

Java 学习和实践笔记(22):package(包机制)、JDK常见的包、类的导入

前面学的类&#xff0c;每创建一个类&#xff0c;在电脑上就是创建了一个对应的类文件。而package 相当于文件夹对文件的管理作用。主要用于管理类、用于解决类的重名问题。这个含义很简单。因为实际的程序&#xff0c;类可能有成千上万个&#xff0c;这样就需要把不同功能的类…

「连载」边缘计算(十九)02-22:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; 从启动函数Start(&#xff09;中可以看到&#xff0c;其以go routine的方式启动很多后台处理服务&#xff0c;具体如下。 1&#xff09;初始化edged的kubeClient&#xff0c;具体如下所示。 // use self defined client to replace fake kube…

JDK5.0新增线程的两种方式

本文主要是了解&#xff0c;并没有进入深入学习&#xff0c;JUC时才会深入学习 8.1新增方式一&#xff1a;实现Callable接口 ~与使用Runable相比&#xff0c;Callable功能更强大些 -- 相比run&#xff08;&#xff09;方法&#xff0c;可以有返回值 ---方法可以抛出异常 -…

LeetCode刷题--- 环形子数组的最大和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

设计模式(十) - 工厂方式模式

前言 在此前的设计模式&#xff08;四&#xff09;简单工厂模式中我们介绍了简单工厂模式&#xff0c;在这篇文章中我们来介绍下工厂方法模式&#xff0c;它同样是创建型设计模式&#xff0c;而且又有些类似&#xff0c;文章的末尾会介绍他们之间的不同。 1.工厂方法模式简介 …

C# TesseractOCR识别身份证号

https://github.com/tesseract-ocr/tessdata 新建控制台项目并添加包 Tesseract和Tesseract.Drawing 下载训练的模型 地址 代码实现 using Tesseract;var filePath "F:\\Desktop\\韦小宝.png"; var exePath AppDomain.CurrentDomain.BaseDirectory; var …

机器视觉运动控制一体机在光伏汇流焊机器人系统的解决方案

一、市场应用背景 汇流焊是光伏太阳能电池板中段加工工艺&#xff0c;其前道工序为串焊&#xff0c;在此环节流程中&#xff0c;需要在多个太阳能电池片表面以平行方式串焊多条焊带&#xff0c;形成电池串。串焊好的多组电池串被有序排列输送到汇流焊接工作台&#xff0c;通过…

接受回调函数的函数

直接上代码 const oneWord function (str) {return str.replace(/ /g, ).toLowerCase(); };const upperFirstWorld function (str) {const [first, ...others] str.split( );return [first.toUpperCase(), ...others].join( ); };// 高阶函数 const transformer function …

深度学习 精选笔记(3)线性神经网络-线性回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

workon把pyhton环境切换为python3.7环境配置

重新创建虚拟环境 创建workon的虚拟环境&#xff08;注意修改中文&#xff09; 注&#xff1a;-p后面的路径为你需要的python版本的python.exe执行文件 mkvirtualenv -p C:\Users\用户名\AppData\Local\Programs\Python\Python37\Python.exe 环境名进入环境&#xff08;注意…