python链表的创建_python单链表中如何插入和输出节点?(代码示例)

news/2024/7/4 13:09:07

python单链表中如何插入和输出节点?下面本篇文章就来带大家了解一下单链表是什么,如何对单链表执行的一些非常基本的操作,例如:插入、输出,希望对大家有所帮助。

5c8f1699da833850.jpg

单链表是什么?

首先在了解单链表之前,我们必须了解一下节点是什么。

节点是链表的构建块,它由两部分组成:

1、数据部分:用于包含数据

2、地址部分:用于指向下一个节点位置的指针。

在单链表中,每个节点的地址部分包含有关下一个节点位置的信息;这形成一系列的链条或链环。链接列表的第一个节点由头部指针跟踪;最后一个节点指向None。

让我们看看下面的图表来更好地理解这一点:

1552880472859315.jpg

注意: 在上图中,最后一个元素1指向None。 即使这些节点彼此连续绘制,实际上它们可能或可能不在连续的存储器位置中。

单链表如何插入和输出节点?

1、创建单链表

首先,您必须创建一个节点才能创建单链表。为此,我们使用data和nextNode属性创建一个Node类。如前所述,data属性将包含数据,而nextNode将简单地指向链表中的下一个节点。我们将默认值nextNode是无。您可以使用getter和setter方法来执行此操作。

现在已经创建了Node类,现在是时候创建LinkedList类了。这只有一个属性,head。默认情况下,这将指向“ None”。如果头部指向“ None”,则表示 链接列表为空。为了跟踪链表中的节点数,我们可以向LinkedList类添加一个 size属性,并将其默认为0。

2、插入节点

这是LinkedList类的方法。我们可以在链接列表中的任何位置插入新节点,但为了使编码简单有效,我们将始终将新节点添加到链表的开头;换句话说,头部将始终指向最近添加的节点。

如果我们将新节点添加到列表的末尾,我们需要执行额外的工作来查找列表的末尾然后添加它。这是一种浪费的操作。但是,如果你维护另一个指针,让我们称它为尾指针,使其指向最后一个节点,这可以完成。

下面我们介绍前一种方法,即如何在链表的开头插入节点。

假设我们需要在链表中添加7,我们需要执行以下步骤:

● 创建一个节点对象,其中7表示数据,下一个节点指向头节点

● 将头指针指向此新节点

最后,将size属性增加1,如果插入成功,返回True,这是一个好习惯;这样,用户就知道发生了什么。

3、输出节点

这是LinkedList类的方法。要打印链表中所有节点中的数据,我们需要一次遍历一个节点并打印每个节点的数据部分。

实现代码:class Node:

def __init__(self,data,nextNode=None):

self.data = data

self.nextNode = nextNode

def getData(self):

return self.data

def setData(self,val):

self.data = val

def getNextNode(self):

return self.nextNode

def setNextNode(self,val):

self.nextNode = val

class LinkedList:

def __init__(self,head = None):

self.head = head

self.size = 0

def getSize(self):

return self.size

def addNode(self,data):

newNode = Node(data,self.head)

self.head = newNode

self.size+=1

return True

def printNode(self):

curr = self.head

while curr:

print(curr.data)

curr = curr.getNextNode()

myList = LinkedList()

print("Inserting")

print(myList.addNode(5))

print(myList.addNode(15))

print(myList.addNode(25))

print("Printing")

myList.printNode()

print("Size")

print(myList.getSize())

单链表的优点和缺点是什么?

优点:

● 它是一种动态数据结构,在这种结构中,插入和删除很简单,因为我们不需要移动元素。只需更新下一个指针就可以完成这项工作。

● 使用链表可以很容易地实现堆栈和队列数据结构。

缺点

● 下一个指针占用了额外的内存。

● 无法随机访问。必须从头遍历链接列表才能到达特定节点。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上就是python单链表中如何插入和输出节点?(代码示例)的详细内容,更多请关注php中文网其它相关文章!

article_wechat2021.jpg?1111

本文原创发布php中文网,转载请注明出处,感谢您的尊重!


http://www.niftyadmin.cn/n/2610698.html

相关文章

python语言的作者是_Python语言

第1章 Python 3概述 1.1 Python简介 2 1.1.1 Python的前世今生 2 1.1.2 Python的应用场合 2 1.1.3 Python的特性 3 1.1.4 选择Python的版本 4 1.1.5 如何学习Python 5 1.2 Python环境构建 5 1.2.1 在Windows系统中安装Python 3 5 1.2.2 在Linux系统中安装Python 3 8 1.2.3 在Ma…

MVC中BeginForm的使用

一、常用形式 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} 二、参数说明 actionName:操作方法的名称,System.String。 controllerName:控制器的名称,System.String。 method&…

如何利用python整合excel_如何使用Python处理Excel

编程应该作为必修加入小学生课程表,这是思维方式的锻炼。 ——沃兹基朔德(借梗) 离开代码也有快两年了。期间其实一直有重新拾起的想法,只是没有模板刺激的动力,加上又懒… 刚好这段时间项目进入一个阶段,一方面需要对上个阶段的产…

Android的 ViewPager 学习笔记

说明&#xff1a; ViewPager用于实现多页面的切换效果&#xff0c;该类存在于Google的兼容包里面&#xff0c;所以在引用时记得在BuilldPath中加入“android-support-v4.jar” 主布局文件 main.xml <?xml version"1.0" encoding"utf-8"?> <Line…

mvc中Scripts.Render的用法

&#xfeff;&#xfeff;一、配置BundleConfig.cs文件 1、首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2、BundleConfig就是一个微软新加的 一个打包的配置类 3、BundleConfig用来Add 各种Bundle 4、BundleConfig配置信息如下&#xff1a; public…

《读完忍不住流泪的文章:母亲,我怎么让妳等了那么久...》

母亲&#xff0c;我怎么让妳等了那么久...文/ 刘继荣 2009/06/03 10:08 母亲真的老了&#xff0c;变得孩子般缠人&#xff0c;每次打电话来&#xff0c;总是满怀热诚地问&#xff1a;「你什么时候回家&#xff1f;」 且不说相隔一千多里路&#xff0c;要转三次车。光是工作、…

JVM类加载的那些事

原文出处&#xff1a; 占小狼 前言 Java源代码被编译成class字节码&#xff0c;最终需要加载到虚拟机中才能运行。整个生命周期包括&#xff1a;加载、验证、准备、解析、初始化、使用和卸载7个阶段。 加载 1、通过一个类的全限定名获取描述此类的二进制字节流&#xff1b;2、将…

mvc razor模式 输出html

&#xfeff;&#xfeff;1、使用Html.Raw(str) Html.Raw("<div stylecolor:red>输出字符串</div>") 2、使用new HtmlString IHtmlString content new HtmlString("<div stylecolor:red>输出字符串</div>");content; 3、直接输出…