`
wx1569484809
  • 浏览: 63889 次
文章分类
社区版块
存档分类
最新评论

python3实现单向链表

 
阅读更多

创建单向链表有很多种方式,个人觉得从数组创建比较方便,不多说,直接上代码

class linkNode():
    """
    链表节点类
    """
    def __init__(self,dat):
        self.dat = dat
        self.next = None
          
class sigLink():   
    """
    this class is used to record a link
    self.length:用于记录该链表的长度
    self.head:该链表的头部
    self.tail:用于记录该链表的尾部。记录尾部比较麻烦,维护部分基本也没做
    """ 
    def __init__(self,item): 
        """
        item:一维数组,存放该单链表的数组
        """   
        self.length = len(item)  
        if self.length<=0:
            return
        i = 0
        self.head = linkNode(item[i])
        self.tail = self.head
        i += 1
        while i<self.length:
            self.tail.next = linkNode(item[i])
            self.tail = self.tail.next
            i += 1
              
    def printlink(self):
        """
        正序打印该链表
        """
        if self.head==None:
            print("这是一条空链表")
        p = self.head
        while p!=None:
            print(p.dat,end=' ')
            p = p.next
        
    def postPrintlink(self,root):
        """
        倒序打印该链表
        """
        if root!=None:
            if root.next != None:
                self.postPrintlink(root.next)
            print(root.dat,end = ' ')
              
    def linkAppend(self,num):
        """
        在链表尾部追加节点
        """
        self.tail.next = linkNode(num)
        self.tail = self.tail.next
        self.length += 1
             
    def getlength(self):
        """
            获取链表的长度
        """
        return self.length
     
    def insertNode(self, index, num):
        """
        在链表中间插入节点
        index:插入点的序号
        num:插入点的值
        """
        if index>self.length:
            print("index参数超出范围")
            return 
        if index==self.length:
            self.linkAppend(num)
            return
        if index == 0:
            p = linkNode(num)
            p.next = self.head
            self.head = p
            self.length += 1
            return
        ptemp = self.head
        while index>1:
            ptemp = ptemp.next
            index -= 1
        p = linkNode(num)
        p.next = ptemp.next
        ptemp.next = p
        self.length += 1
          
a = sigLink([1,2,3,4,5,6,7])
a.insertNode(2, 10)
a.printlink()

转载于:https://my.oschina.net/u/3464640/blog/983605

分享到:
评论

相关推荐

    单向链表 代码架构

    在“单向链表”这个压缩包中,我们可能找到一个实现了上述功能的源代码文件,比如包含`insertAtEnd`、`deleteNode`、`printList`和`sortList`等函数的实现。通过阅读和分析这些代码,学生可以深入理解链表的内部工作...

    python实现单向链表详解

    【Python实现单向链表详解】 链表是一种重要的数据结构,它不同于数组,不需预先定义大小,可以动态地增删元素。链表中的每个元素称为“节点”,每个节点包含数据域(存储数据)和指针域(指向下一个节点)。在...

    Python单向链表和双向链表原理与用法实例详解

    在Python中,我们可以自定义链表结构来实现单向链表和双向链表。 单向链表(Single Linked List)的特点是每个节点只包含一个指向下一个节点的引用。在单向链表中,遍历只能从头节点开始,按顺序访问每个节点,无法...

    python实现获取单向链表倒数第k个结点的值示例

    本文实例讲述了python实现获取单向链表倒数第k个结点的值。分享给大家供大家参考,具体如下: #初始化链表的结点 class Node(): def __init__(self,item): self.item = item self.next = None #传入头结点,获取...

    数据结构 单向链表 双向链表 源程序

    在"第一、二章"的压缩文件中,很可能包含了实现单向链表和双向链表操作的C、C++、Java或Python等语言的源代码示例。这些示例程序可能涉及了初始化链表、插入新节点、删除指定节点、查找特定元素、打印链表内容等功能...

    链表倒序__实现单向链表倒序

    单向链表是最简单的链表类型,其特点是每个节点只能向前遍历,不能向后。在某些情况下,我们需要对链表进行倒序操作,即将链表的顺序反转,例如将A-&gt;B-&gt;C转换为C-&gt;B-&gt;A。这个过程是Intel面试中常见的一个问题,旨在...

    python数据结构链表之单向链表(实例讲解)

    单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 表元素域elem...

    python数据结构与算法详解与源码

    4-12 单向循环链表删除元素复习及链表扩展 4-13 双向链表及添加元素 4-14 双向链表删除元素 五、排序与搜索 5-01 排序算法的稳定性 5-02 冒泡排序及实现 5-03 选择排序算法及实现 5-04 插入算法 5-05 插入...

    链表-使用Python实现链表数据结构.zip

    单向链表只能向前移动,而双向链表允许向前和向后移动。循环链表的最后一个节点指回列表的开头,形成一个环。 Python的内置数据结构如列表(list)已经实现了高效的随机访问,但在插入和删除操作上,特别是对于...

    python实现反转部分单向链表

    总之,Python实现反转部分单向链表的关键在于理解链表结构、正确处理边界条件以及巧妙地改变节点之间的指针关系。这不仅锻炼了对链表操作的掌握,也提升了对算法复杂度的理解。通过这个练习,开发者能够更好地应对...

    Python实现的单向循环链表功能示例

    单向循环链表是一种特殊的数据结构,它结合了单向链表的特点和循环链表的功能。与普通的单向链表不同,单向循环链表中的最后一个节点不是指向`None`,而是指向链表的第一个节点(即头节点),形成一个闭环。 ### ...

    Python实现针对给定单链表删除指定节点的方法

    本篇文章将详细讲解如何在Python中实现针对给定单链表删除指定节点的方法,以及相关的单链表操作技巧。 首先,我们需要定义一个`Node`类来表示链表中的节点。这个类包含两个属性:`num`用于存储数据,`next`则指向...

    单向循环链表python

    单向循环链表(Singly Circular Linked List)是一种特殊的链表,它与普通的单向链表非常相似,唯一的区别在于尾节点的next指针指向头节点而不是空。这样就形成了一个循环,使得链表中的节点可以通过循环遍历而不会...

    数据结构:单向循环链表源码

    3. **插入和删除操作**:插入和删除节点的操作与普通单向链表类似,但需要考虑链表是否为空及插入位置的判断。 **单向循环链表常见操作** 1. **创建链表**:初始化链表,通常创建一个节点作为链表的首节点。 2. **...

    Python实现的数据结构与算法之链表详解

    本文实例讲述了Python实现的数据结构与算法之链表。分享给大家供大家参考。具体分析如下: 一、概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的...

    python单向链表的基本操作细节(小白入门)

    【Python 单向链表的基本操作细节】 链表是一种数据结构,它不同于数组,它将数据元素分散在内存的不同位置,而不是连续存储。单向链表是链表的一种形式,其中每个节点包含一个数据元素和一个指向下一个节点的引用...

    python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】

    本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 class Node(): def __init__(self,item): #初始化这个节点,值和下一个指向 self....

Global site tag (gtag.js) - Google Analytics