我有以下链接列表实现,现在我已经完美地工作了。然而,我并没有理解,为了教学的目的,我可以证明一个链表中包含“下一个指针”的节点。

我的理解是元素按照它们的顺序存储,所以在这种情况下,4,2,3,1。我想在内部改变指针,所以根据指针的实际顺序是1,2,3,4。开始或头指针将在4(这是数组中的第4个元素),第4个元素指向2,这是数组中的第二个元素。

有人可以帮我解释一下,帮助初学者教这个:

为了澄清,我试图展示的是:

元素以4,2,3,1的顺序进来并存储在节点的'data'组件中。

我们可以使用节点中的'next pointers'重新排序元素,以便实际顺序(打印时)为1.2.3.4,并将4指定为起始节点*这是我需要帮助理解的部分以及如何清晰地演示。

这是我的代码:

class Node:

def __init__(self,data=None):

self.data=data #this is the data attribute

self.next=None #next pointer

class LinkedList:

def __init__(self):

self.head=Node() #used as a placeholder to point to the first element (doesn't contain anything)

#this is not a data node

def append(self,data): #adding new data to the linked list

new_node=Node(data)

cur=self.head #variable to store the node we are currently looking at

#iterate over each node starting with head, and when next node =None, then we are at the end

while cur.next!=None:

cur=cur.next #traverse through the list

#once we know we are at the end, set the next node equal to our new node

cur.next=new_node

def length(self):

cur=self.head

total=0

while cur.next!=None:

total+=1

cur=cur.next

return total

def display(self):

elems=[]

cur_node=self.head

while cur_node.next!=None:

cur_node=cur_node.next

elems.append(cur_node.data)

print(elems)

def get(self,index):

if index>=self.length():

print("ERROR: 'Get' Index out of range!")

return None

cur_idx=0

cur_node=self.head

while True:

cur_node=cur_node.next

if cur_idx==index: return cur_node.data

cur_idx+=1

# Deletes the node at index 'index'.

def erase(self,index):

if index>=self.length():

print ("ERROR: 'Erase' Index out of range!")

return

cur_idx=0

cur_node=self.head

while True:

last_node=cur_node

cur_node=cur_node.next

if cur_idx==index:

last_node.next=cur_node.next

return

cur_idx+=1

linkedlist=LinkedList()

linkedlist.append(4)

linkedlist.append(2)

linkedlist.append(3)

linkedlist.append(1)

linkedlist.display()

linkedlist.erase(2)

linkedlist.display()

python有链表和指针吗_了解如何更改指针和命令链表实现python相关推荐

  1. python 单链表是否有回路_第5章 第1节 链表

    ● 请你说出几种基本的数据结构, 参考回答: 常见的基本的数据结构有链表.栈.队列.树(只列出面试常考的基本数据结构) 1.链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链 ...

  2. 儿童学python下哪个软件好用_【开源软件】超好用的Python学习软件!没有之一!...

    可以观看视频!文章结尾,有下载.安装方法! 曾几何时!Python开始掀起了一阵狂猛的学习浪潮?Python 那么Python为什么那么火? https://wenwen.sogou.com/z/q8 ...

  3. python os.system(cls)没反应_这真的是全宇宙最简单的Python安装方式了

    大家安装Python一般都是怎么安装的呢?每次有同学来问老师Python的安装方法时,老师都会教大家如何到Python的官网下载最新的Python安装包.但近来也有同学在反应,由于Python的官网在 ...

  4. python的常用集成开发环境_【分享|10个超好用的Python集成开发环境推荐】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  5. python xlsx 样式 谷歌开源 样式_连续加班一周最终把所有的Python库整理出来了,愿各位早日学会Py-站长资讯中心...

    MySQLdb,成熟的[MySQL]数据库模块, Baresql,SQL数据库包 ZODB,Python本地对象数据库.一个K-V对象图数据库. pickledb,简单和轻量级的K-V键值存储. Ti ...

  6. python人工智能什么人可以学_本科想学习人工智能方向,需要学习python的什么方向?...

    工作时长两年的算法工程师来答一波! 学习方向主要分为 4 个部分:数学基础.编程能力.算法基础.实战. 1.数学基础 在机器学习算法中,涉及到最为重要的数学基本知识有两个:线性代数和概率论. 这两也是 ...

  7. java 链表逆序代码_如何实现一个高效的单向链表逆序输出?(详解)

    需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. ...

  8. 小甲鱼python课后题百度网盘_[全套55讲] 鱼c论坛小甲鱼python课后题

    [全套55讲] 鱼c论坛小甲鱼python课后题 第 1 课0. Python 是什么类型的语言Python 是脚本语言脚本语言Scripting language是电脑编程语言,因此也能让开发者藉以 ...

  9. python网络数据采集 第三版_(数据科学学习手札31)基于Python的网络数据采集(初级篇)...

    一.简介 在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时 ...

最新文章

  1. oracle 开始一个事务,oracle的启动与关闭原理-事务commit或者rollback
  2. 中文 查询_查询商标,商标注册通过分析的几个小技巧
  3. ajax php加载列表实例,jQuery+PHP+ajax实现加载更多内容列表
  4. safari浏览器_用了这么多年iPhone才知道,原来?Safari浏览器这么好用
  5. 火狐、IE、Chrome已进入三国时代
  6. python 登录接口_使用python编写一个登录接口
  7. [zz]va_start() 和 va_end()函数应用
  8. python同时输出名字和时间,python中的日期和时间格式化输出
  9. 黑盒测试--等价类划分
  10. Helen人脸数据集生成人脸分割
  11. PLC编程时三个注意事项
  12. 内网穿透工具的原理与开发实战
  13. 【Golang】查找-学习笔记
  14. word/excel 里的表格如何到PS里使用
  15. HTML网页设计期末课程大作业 ~中国茶文化5页面带轮播(HTML+CSS+JS)~ 学生网页设计作业源码
  16. Unity5.3官方VR教程重磅登场-系列6 VR真机测试和产品发布
  17. 2015_12_27微软校园招聘笔试题目
  18. Leetcode 1217. Minimum Cost to Move Chips to The Same Position [Python]
  19. 面试题总结(测试理论)
  20. STM32--汇编语言:子程呼叫与无条件跳转指令B、BL、BX和BLX

热门文章

  1. Hbase安装流程及踩坑心得
  2. 线上培训!如何添加自定义形态选股策略!股票量化分析工具QTYX-V2.5.6
  3. STM32学习(七)
  4. VS小番茄插件常用快捷键
  5. Dubbo SPI机制学习总结(持续更新...)
  6. 2023 《计算机应用》 期刊最新投稿经验!!!
  7. 在WSL中启动Ubuntu 20.04时出现错误[出现错误 2147942402 (0x80070002) (启动“ubuntu2004.exe”时)]
  8. 『SQLServer』远程服务器的SqlServer设置允许本地连接
  9. Java通道(Channel)的实现及优势
  10. (附源码)springboot网络不良信息检测系统 毕业设计 231155