备战蓝桥杯Day17 - 链表

链表

基本概念

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

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

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

1. 链表的初始化

# 手动建立链表
# 链表的初始化
class Node(object):
    def __init__(self, item):
        self.item = item
        self.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)

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT带火的HBM是什么?

“ChatGPT是人工智能领域的iPhone时刻,也是计算领域有史以来最伟大的技术之一。” 英伟达创始人兼CEO黄仁勋此前这样盛赞ChatGPT。 ChatGPT突然爆火,对大算力芯片提出了更高更多的要求。近日,据韩国经济日报报道,受惠于ChatGPT&am…

易基因:CHH甲基化丢失可触发玉米表观等位基因的可遗传变化|作物研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 研究人员已经在多种植物物种中观察到在杂交过程中跨染色体间互作而导致DNA甲基化变化。然而,这些互作的原因或结果知之甚少。 2023年12月18日,佛罗里达大学微生物…

ClickHouse 指南(三)最佳实践 -- 主键稀疏索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中,我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

[c/c++] static 关键字

从修饰的对象来看,static 可以修饰局部变量,也可以修饰全局变量,可以修饰函数;可以修饰类中的成员变量以及成员函数。 从生命周期的角度来看,static 修饰的对象的生命周期,与进程的生命周期是一致的。 从…

YOLOv7代码解读[01] readme解读

模型性能 安装 # create the docker container, you can change the share memory size if you have more. nvidia-docker run --name yolov7 -it -v your_coco_path/:/coco/ -v your_code_path/:/yolov7 --shm-size64g nvcr.io/nvidia/pytorch:21.08-py3# apt install requir…

如果使用npm无法下载模块依赖,那么你可以尝试一下这个方法

问题复现 如果执行,npm install XXXX,出现了无法安装,一直等待,如何解决? 解决方法 1.先查看npm配置 npm config ls2.设置prefix和cache(可选) 指定到node安装目录 npm config set prefix …

【QT+QGIS跨平台编译】之五十一:【QGIS_CORE跨平台编译】—【qgsexpressionparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

Netwalker勒索病毒服务私有化,只攻击目标企业

前言 2020年勒索病毒攻击出现了一些新的发展趋势,一些勒索病毒黑客组织将目标对准了一些国内外明星,网红博主等,还有一些勒索病毒黑客组织将自己的RAAS平台私有化,像之前比较流行的NEMTY勒索病毒黑客组织,就公开声称将…

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

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

Qt QWidget 简约美观的加载动画 第五季 - 小方块风格

给大家分享两个小方块风格的加载动画 &#x1f60a; 第五季来啦 &#x1f60a; 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…

vulnhub----hackme2-DHCP靶机

文章目录 一&#xff0c;信息收集1.网段探测2.端口扫描3.目录扫描 二&#xff0c;信息分析三&#xff0c;sql注入1.判断SQL注入2.查询显示位3.查询注入点4.查询库5.查询表6.查字段7. 查user表中的值8.登陆superadmin用户 四&#xff0c;漏洞利用文件上传命令执行蚁剑连接 五&am…

SwiftUI中的 WebView

SwiftUI中的WebView是一个用于显示网页内容的视图。它是使用WebKit框架的一个封装。 要在SwiftUI中使用WebView&#xff0c;你可以按照以下步骤操作&#xff1a; 首先&#xff0c;导入WebKit框架&#xff1a; import WebKit创建一个WebView实例&#xff1a; struct WebView…

将文件从windows传入到ubuntu

实现效果图 2.方法&#xff1a; 2.1打开 Ubuntu 的终端窗口&#xff0c;然后执行如下命令来安装 FTP 服务 输入&#xff1a;sudo apt-get install vsftpd 等待软件自动安装&#xff0c;安装完成以后使用如下 VI 命令打开/etc/vsftpd.conf&#xff0c;命令如下&#xff1a;su…

qt5.15 升级 qt 6.5 部分问题 解决修复

报错 QT5_USE_MODULES 升级 QT6_ADD_RESOURCES qt_add_resources Compiles binary resources into source code. CMake Commands in Qt6 Core | Qt Core 6.6.2

CrossOver24.0新功能介绍以及2024使用激活教程

CrossOver24简介 CrossOver 24.0 Mac/Linux版是一款功能强大的类虚拟机软件。CrossOver 24.0 for Mac/Linux软件能够帮助在Mac/Linux系统上使用Windows系统所支持的软件&#xff0c;实现各个系统之间的无缝集成。通过crossover 24.0软件用户可以进行跨平台的复制粘贴和文件互通…

刷题日记 | 字符串扩容和增强型for循环

for(char c:s)遍历字符串 增强型for循环 C for(char c:s)遍历字符串 增强型for循环_c for (char c : s)-CSDN博客 字符串使用前要进行扩容 reserve函数 【CString类成员函数辨析】resize(),size(),capacity(),reserve()函数的解析与对比_c reserve函数-CSDN博客 a.size() 用来…

ES小总结

组合查询 FunctionScoreQueryBuilder functionScoreQuery QueryBuilders.functionScoreQuery(boolQuery,new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery("isAD",true),Score…

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库 Q&#xff1a;顺丰科技2024届校园招聘面向对象是&#xff1f; A&#xff1a;2024届应届毕业生&#xff0c;毕业时间段为2023年10月1日至2024年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或…

代码随想录算法训练营第四一天 | 背包问题

目录 背包问题01背包二维dp数组01背包一维 dp 数组&#xff08;滚动数组&#xff09;分割等和子集 LeetCode 背包问题 01背包 有n件物品和一个最多能背重量为 w 的背包&#xff0c;第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#x…

5Why分析法不会用?别担心,精益企业管理咨询公司助你解锁新技能

近年来&#xff0c;为了保持竞争力&#xff0c;许多企业开始转向精益管理&#xff0c;而5Why分析法则是实现这一目标的关键工具之一。然而&#xff0c;对于许多初学者来说&#xff0c;5Why分析法可能显得陌生和复杂。今天&#xff0c;天行健精益企业管理咨询公司就来分享如何运…