数据结构 | 单向链表学习总结
单向链表学习总结
- 简介
- 总结
- 链表介绍
- 链表定义
- 链表函数
- 计算链表的长度
- 将列表转换为链表
- LeetCode:剑指 Offer 22. 链表中倒数第k个节点
双向链表学习总结:python | 双向链表
简介
今天打开力扣每日一题,遇到一个新的数据结构:链表。
本来每次力扣做题我都是在我自己的本地python调试,调试好后才提交到网上。但是今天遇到一个问题:力扣的测试用例写的是:[1,2,3,4,5]
,我在写测试用例的时候,也写了:input = [1,2,3,4,5]
,但是官方的程序竟然都通不过。
后来查找问题的时候才意识到,如果我以input = [1,2,3,4,5]
作为输入,那么程序认为输入是列表而不是链表。
做个个人的总结。介绍一下链表及其常见的用法。
总结
链表介绍
首先展示一下,在python中,链表和列表的区别:
从图中可以看出,链表和列表中同时保存1,3,2
几个数字。但是列表和链表的保存方式并不同。
总结来说(参见:python数据结构之链表),链表是通过一个个节点(Node)组成的,每个节点都包含了称为数据域(value)和指针域(next)的基本单元,它也是一种递归的数据结构。它能保持数据之间的逻辑顺序,但存储空间不必按照顺序存储。
链表定义
python没有自带的链表结构,需要自行定义。
程序如下:
class ListNode(object):def __init__(self, x):self.val = xself.next = None
调用的用法如下:
l1 =
l1.val
l1.next.val
li.next.next.val
链表函数
计算链表的长度
列表的长度计算:len(list1)
但是链表如此操作会报错。
链表的长度计算规则为:
- 计数:= 0
- 当节点不为空时,执行:
数:=数+ 1
节点:=节点的下一个 - 返回计数
程序如下:
node = ListNode() # Node 为链表
count = 0
while node:count +=1node=node.next
print(n) # n表示链表的长度
将列表转换为链表
参见: python将列表转化为链表
class Solution:def initList(self, data):# 判断是否为空if len(data) == 0:returnelse:# 创建头结点self.head = ListNode(data[0])# 头结点r = self.head # 指针 p = self.head # 逐个为 data 内的数据创建结点, 建立链表for i in data[1:]:node = ListNode(i)p.next = nodep = p.nextreturn rif __name__ == "__main__":test = Solution()data1 = [1, 3, 2]l1 = test.initList(data1)print(l1.val, "->", l1.next.val, "->", l1.next.next.val)
LeetCode:剑指 Offer 22. 链表中倒数第k个节点
问题:
看懂链表的结构后,这道题 就很非常好做了。
官方解答:
class Solution:def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:node, n = head, 0# 计算链表长度while node:node = node.nextn += 1node = headfor _ in range(n - k):node = node.nextreturn node
数据结构 | 单向链表学习总结相关推荐
- 【单向链表】数据结构——单向链表的介绍与代码实现笔记
从今天开始将修炼数据结构专栏,将持续更新,分模块学习. 数据结构--单向链表 一.数据结构 1.什么是数据结构? 2.逻辑结构和物理结构 二.链表--线性结构 1.首先介绍下链表和数组的区别 2.链表 ...
- 数据结构-单向链表解决学生录入问题
数据结构-单向链表 单向链表实现学生录入程序 通过main函数实现一切功能 通过调用函数实现 传送门结束 单向链表实现学生录入程序 将用户输入的不定个数的学生成绩按顺序编号并保存,以用户输入0作为录入 ...
- 数据结构单向链表线性结构_线性数据结构链表为何以及如何解释
数据结构单向链表线性结构 Imagine you have gone to a crowded place, say to a k-pop concert with your friends and ...
- 简单数据结构——单向链表
恩,准备重最简单的东西复习和学习一遍.那就从数据结构开始吧. 我尽量用公司的代码标准来进行编码.希望对刚刚开始学习数据结构的有一些帮助吧. 使我的代码可以简单易懂. 我记得上数据结构的第一个程序就是链 ...
- 数据结构—单向链表(详解)
一.链表基础 链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节点等.链表 ...
- 数据结构--单向链表
单向链表的一种Go语言实现 package mainimport "fmt"type Node struct {no intname stringnext *Node }//实现尾 ...
- 数据结构——单向链表
链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成. 结点API设计 类名 N ...
- 数据结构——单向链表-双向链表
1.单向链表按位置修改 //按位置修改 int updata_pos(linklist *L,int pos,datatype new_e) {if(NULL==L||empty(L)||pos< ...
- 数据结构单向链表(C++)
head文件 #include<iostream> #define status int #define OK 1 #define ERROR 0 using namespace std; ...
最新文章
- android adb 命令源码解析
- 【剑指offer】设置在最小数目的阵列
- 你在中国有去过那些地区?
- 科大星云诗社动态20210323
- WCF 动态调用(1)
- 在Activity的Title中加入进度条
- priority_queue优先队列的用法总结
- 云服务器变成多个挂机宝销售,云服务器变成挂机宝
- Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0
- 获取弹出的窗口_Win7系统如何获取设置everyone权限的问题
- 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
- leetcode - 155. 最小栈
- 角度控制_手机拍剪影,选择拍摄角度,还要控制画面亮度
- 支付宝换上“读心术”AI客服,就为配合双11剁手的你
- tek示波器软件_给示波器以云空间,泰克发布突破性的数据协同软件TekDrive
- 苦难是屈辱,还是财富?
- 日野汽车数据作假召开记者招待会
- SPH实践之WCSPH两问题
- 网络指标含义解释( 吞吐量 反应时间 延时 抖动 丢包)
- 【实践】Ceph:创建Cephfs文件
热门文章
- 基于springboot药品管理系统 开题报告与任务书(个人)
- 快速开发:团队与激励
- Oracle 11gR2 RAC 添加节点
- 成功解决 SyntaxError: Non-UTF-8 code starting with \xc0 in file but no encoding declared; see http://p
- 微信支付完成或取消后在ios系统回跳到Safari默认浏览器的解决方案
- 写一份后端开发工作亮点
- 闪动的gif怎么制作?三步教你在线合成闪动gif
- PhysX3.4文档(5) --Rigid Body Collision
- [渝粤教育] 中国地质大学 操作系统原理(新) 复习题 (2)
- 请使用Python编写基于RP2040和CH9121的ntp时间戳获取程序