单向链表学习总结

  • 简介
  • 总结
    • 链表介绍
    • 链表定义
    • 链表函数
      • 计算链表的长度
      • 将列表转换为链表
    • 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)
但是链表如此操作会报错。

链表的长度计算规则为:

  1. 计数:= 0
  2. 当节点不为空时,执行:
    数:=数+ 1
    节点:=节点的下一个
  3. 返回计数

程序如下:

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. 【单向链表】数据结构——单向链表的介绍与代码实现笔记

    从今天开始将修炼数据结构专栏,将持续更新,分模块学习. 数据结构--单向链表 一.数据结构 1.什么是数据结构? 2.逻辑结构和物理结构 二.链表--线性结构 1.首先介绍下链表和数组的区别 2.链表 ...

  2. 数据结构-单向链表解决学生录入问题

    数据结构-单向链表 单向链表实现学生录入程序 通过main函数实现一切功能 通过调用函数实现 传送门结束 单向链表实现学生录入程序 将用户输入的不定个数的学生成绩按顺序编号并保存,以用户输入0作为录入 ...

  3. 数据结构单向链表线性结构_线性数据结构链表为何以及如何解释

    数据结构单向链表线性结构 Imagine you have gone to a crowded place, say to a k-pop concert with your friends and ...

  4. 简单数据结构——单向链表

    恩,准备重最简单的东西复习和学习一遍.那就从数据结构开始吧. 我尽量用公司的代码标准来进行编码.希望对刚刚开始学习数据结构的有一些帮助吧. 使我的代码可以简单易懂. 我记得上数据结构的第一个程序就是链 ...

  5. 数据结构—单向链表(详解)

    一.链表基础 链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节点等.链表 ...

  6. 数据结构--单向链表

    单向链表的一种Go语言实现 package mainimport "fmt"type Node struct {no intname stringnext *Node }//实现尾 ...

  7. 数据结构——单向链表

    链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成. 结点API设计 类名 N ...

  8. 数据结构——单向链表-双向链表

    1.单向链表按位置修改 //按位置修改 int updata_pos(linklist *L,int pos,datatype new_e) {if(NULL==L||empty(L)||pos< ...

  9. 数据结构单向链表(C++)

    head文件 #include<iostream> #define status int #define OK 1 #define ERROR 0 using namespace std; ...

最新文章

  1. android adb 命令源码解析
  2. 【剑指offer】设置在最小数目的阵列
  3. 你在中国有去过那些地区?
  4. 科大星云诗社动态20210323
  5. WCF 动态调用(1)
  6. 在Activity的Title中加入进度条
  7. priority_queue优先队列的用法总结
  8. 云服务器变成多个挂机宝销售,云服务器变成挂机宝
  9. Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0
  10. 获取弹出的窗口_Win7系统如何获取设置everyone权限的问题
  11. 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
  12. leetcode - 155. 最小栈
  13. 角度控制_手机拍剪影,选择拍摄角度,还要控制画面亮度
  14. 支付宝换上“读心术”AI客服,就为配合双11剁手的你
  15. tek示波器软件_给示波器以云空间,泰克发布突破性的数据协同软件TekDrive
  16. 苦难是屈辱,还是财富?
  17. 日野汽车数据作假召开记者招待会
  18. SPH实践之WCSPH两问题
  19. 网络指标含义解释( 吞吐量 反应时间 延时 抖动 丢包)
  20. 【实践】Ceph:创建Cephfs文件

热门文章

  1. 基于springboot药品管理系统 开题报告与任务书(个人)
  2. 快速开发:团队与激励
  3. Oracle 11gR2 RAC 添加节点
  4. 成功解决 SyntaxError: Non-UTF-8 code starting with \xc0 in file but no encoding declared; see http://p
  5. 微信支付完成或取消后在ios系统回跳到Safari默认浏览器的解决方案
  6. 写一份后端开发工作亮点
  7. 闪动的gif怎么制作?三步教你在线合成闪动gif
  8. PhysX3.4文档(5) --Rigid Body Collision
  9. [渝粤教育] 中国地质大学 操作系统原理(新) 复习题 (2)
  10. 请使用Python编写基于RP2040和CH9121的ntp时间戳获取程序