python操作链表的示例代码

class Node:
  def __init__(self,dataval=None):
    self.dataval=dataval
    self.nextval=None

class SLinkList:
  def __init__(self):
    self.headval=None

  # 遍历列表
  def traversal_slist(self):
    head_node=self.headval
    while head_node is not None:
      print(head_node.dataval)

      head_node=head_node.nextval

#   表头插入结点
  def head_insert(self,newdata):
    Newdata=Node(newdata)
    Newdata.nextval=self.headval
    self.headval=Newdata

  # 表尾插入结点
  def tail_insert(self,newdata):
    Newdata=Node(newdata)

    if self.headval is None:
      self.headval=Newdata
      return
    head_node = self.headval
    while head_node.nextval :
      head_node=head_node.nextval
    head_node.nextval=Newdata

#   在两个数据结点之间插入
  def middle_insert(self,middle_node,newdata):
    Newdata=Node(newdata)
    if middle_node is None:
      return
    Newdata.nextval=middle_node.nextval
    middle_node.nextval=Newdata

#   删除结点
  def remove_node(self,newdata):
    head_node=self.headval
    if head_node==None:
      return
    if head_node.dataval == newdata:
      self.headval = head_node.nextval
      head_node = None
      return
    while head_node is not None:
      prev=head_node
      head_node=head_node.nextval
      if head_node:
        if head_node.dataval==newdata:
          prev.nextval=head_node.nextval

lis=SLinkList()
lis.headval=Node('aa')
ee=Node('bb')
lis.headval.nextval=ee

lis.head_insert('cc')
lis.tail_insert('dd')
lis.middle_insert(ee,"Fri")
lis.remove_node('bb')

lis.traversal_slist()

以上就是python操作链表的示例代码的详细内容,更多关于Python链表的资料请关注我们其它相关文章!

(0)

相关推荐

  • python/golang实现循环链表的示例代码

    循环链表就是将单链表的末尾指向其头部,形成一个环.循环链表的增删操作和单链表的增删操作 区别不大.只是增加时,需要考虑空链表增加第一个节点的特殊情况:删除时需考虑删除节点是头/尾节点,和链表中只有一个节点的特殊情况. golang实现: type Node struct { value int next *Node } type Circle struct { tail *Node lenth int } // 增加节点: func (c *Circle) add(value int) { ne

  • python/golang 删除链表中的元素

    先用使用常规方法,两个指针: golang实现: type Node struct { value int next *Node } type Link struct { head *Node tail *Node lenth int } // 向链表中添加元素 func (link *Link) add(v int) { if link.lenth == 0 { // 当前链表是空链表 link.head = &Node{v, nil} link.tail = link.head link.l

  • Python单链表原理与实现方法详解

    本文实例讲述了Python单链表原理与实现方法.分享给大家供大家参考,具体如下: Python实现单链表 关于链表 链表(Linked List)是由许多相同数据类型的数据项按照特定顺序排列而成的线性表. 链表中个数据项在计算机内存中的位置是不连续且随机的,数组在内存中是连续的. 链表数据的插入和删除很方便,但查找数据效率低下,不能像数组一样随机读取数据. 单链表的实现 一个单向链表的节点由数据字段和指针组成,指针指向下一个元素所在内存地址 定义一个链表节点类,self.value实例属性表示节

  • python实现从尾到头打印单链表操作示例

    本文实例讲述了python实现从尾到头打印单链表操作.分享给大家供大家参考,具体如下: # coding=utf-8 class SingleNode: def __init__(self, item): self.item = item self.next = None class SingleLinkedList: """ is_empty() 链表是否为空 print_end_to_head() 从尾到头打印单链表 append(item) 链表尾部添加元素 "

  • python判断链表是否有环的实例代码

    先看下实例代码: class Node: def __init__(self,value=None): self.value = value self.next = None class LinkList: def __init__(self,head = None): self.head = head def get_head_node(self): """ 获取头部节点 """ return self.head def append(self

  • Python双链表原理与实现方法详解

    本文实例讲述了Python双链表原理与实现方法.分享给大家供大家参考,具体如下: Python实现双链表 文章目录 Python实现双链表 单链表与双链表比较 双链表的实现 定义链表节点 初始化双链表 判断链表是否为空 双链表尾部添加元素 双链表头部添加节点: 双链表表头删除 双链表按位置插入 双链表删除指定节点 完整代码 单链表与双链表比较 双链表比单链表多一个前驱指针位置,空间效率不占优势 由于双链表中的节点既可以向前也可以向后,相比单链表在查找方面效率更高(可使用二分法) 双链表的实现 定

  • Python实现队列的方法示例小结【数组,链表】

    本文实例讲述了Python实现队列的方法.分享给大家供大家参考,具体如下: Python实现队列 队列(FIFO),添加元素在队列尾,删除元素在队列头操作 列表实现队列:利用python列表方法 代码如下: # 列表实现队列 class listQueue(object): def __init__(self): self.items = [] def is_empty(self): return self.items == None def size(self): return len(sel

  • Python实现链表反转的方法分析【迭代法与递归法】

    本文实例讲述了Python实现链表反转的方法.分享给大家供大家参考,具体如下: Python实现链表反转 链表反转(while迭代实现): 链表的反转引入一个cur_node变量,表示当前节点:同时需要引入一个变量new_link表示反转后的新链表:while循环内还需中间变量tmp存放当前节点的后继节点,防止原链表数据丢失. 在while循环内(循环条件为 cur_node !=None,若设置为cur_node.next将导致最后一个节点无法反转到新链表): 首先需要将当前节点的后继节点传递

  • python的链表基础知识点

    python中的链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接.链表有两种类型:单链表和双链表. 链表的数据结构如下图所示: 在链表中删除操作可以通过修改指针来实现,如下图所示: 插入则是调整,插入点的前后两个指针的指向关系,如下图所示: 在python中每个变量都是指针,例如: 用内置数据结构(list,dict,tuple等)的嵌套/组合,它们隐式地包含了指向/嵌套关系,如graph[u][v]={w0,w1..}类的

  • python操作链表的示例代码

    class Node: def __init__(self,dataval=None): self.dataval=dataval self.nextval=None class SLinkList: def __init__(self): self.headval=None # 遍历列表 def traversal_slist(self): head_node=self.headval while head_node is not None: print(head_node.dataval)

  • Python操作rabbitMQ的示例代码

    引入 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现. rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输.在易用性,扩展性,高可用性上表现优秀.使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在.而且两端可以使用不同的语言编写,大大提供了灵活性. 中文文档 安装 # 安装配置epel源 rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-

  • Python单链表简单实现代码

    本文实例讲述了Python单链表简单实现代码.分享给大家供大家参考,具体如下: 用Python模拟一下单链表,比较简单,初学者可以参考参考 #coding:utf-8 class Node(object): def __init__(self, data): self.data = data self.next = None class NodeList(object): def __init__(self, node): self.head = node self.head.next = No

  • python3.7通过thrift操作hbase的示例代码

    HBase是一个分布式的.面向列的开源数据库,其是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.其数据结构类似与Redis的key-value模式. python3.7 通过 thrift , rpc 接口操作 hbase ,指定依赖库为: thrift 和 hbase-thrift . 然而我们 在 python3.7 环境中发现 hbase-thrift-0.20.4 无法

  • python pygame 愤怒的小鸟游戏示例代码

    小鸟(image) 游戏展示 代码展示 import pygame,sys pygame.init()#初始化操作 #保存窗口大小 width,height=600,400 screen=pygame.display.set_mode([width,height])#创建游戏窗口 #设置窗口标题 pygame.display.set_caption("愤怒的小鸟") #加载小鸟素材 player=pygame.image.load("xiaoniao.png") #

  • C语言实现无头单向链表的示例代码

    目录 一.易错的接口实现 1.1 新节点开辟函数 1.2 尾插 1.3 尾删 二.常见简单接口 2.1 打印链表 2.2 节点计数器 2.3 判断是否为空链表 2.4 通过值查找节点 2.5 头插 2.6 头删 2.7 在任意节点后插入节点 2.8 在任意节点后删除节点 2.9 销毁链表 三.头文件相关内容 3.1 引用的库函数 3.2 结构体声明 一.易错的接口实现 1.1 新节点开辟函数 由于创建一个新节点是频繁的操作,所以封装为一个接口最佳. 链表节点的属性有:(1)数值.(2)指向下一个

  • 通过Python绘制中国结的示例代码

    目录 1 中国结的组成部分 2 设计中国结对象 3 绘制结体 4 绘制耳翼 5 绘制挂耳和流苏 6 完整代码,一键运行 1 中国结的组成部分 中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面.因为其外观对称精致,可以代表汉族悠久的历史,符合中国传统装饰的习俗和审美观念,故命名为中国结.中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱.其主要组成部分如下图所示. 2 设计中国结对象 基于Python Turtle库实现绘制,首先设计一个中国结对象,

  • Python编写春联的示例代码(支持行书隶书楷书)

    目录 选择矢量字库 选择一款喜欢的春联背景图案 完整代码 效果展示 仅供学习编程技术之用,绝无侵犯字体权利人之权力的故意,特此声明. 选择矢量字库 虽然有很多方法可以帮你呈现出系统支持的所有字体文件,我建议最直接的方式是去查看操作系统的字体目录.以Windows为例,我直接在C:\Windows\Fonts这个路径下找到了“华文隶书”这个字库文件,查看属性可知,该文件名为STLITI.TTF.找到了喜欢的字库文件,只需要将其全路径文件名替换到代码中的FONT_FILE常量即可,不需要做其他操作

  • C语言实现动态链表的示例代码

    目录 结构体定义已经函数声明 函数实现 创建一个链表 判断链表是否为空 获得链表中节点的个数 在某个特定的位置插入一个元素 获得指定下标的节点的元素 删除一个节点 链表逆序 链表的清空 链表的销毁 链表的遍历 按特定的元素查找节点 按某些特定的条件删除所有符合情况的节点 链表的排序 总结 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分:一个是存储

  • C语言实现线性动态(单向)链表的示例代码

    目录 什么是链表 为什么不用结构体数组 链表的操作 创建表 删除元素 插入元素 代码及运行结果 什么是链表 链表是数据结构里面的一种,线性链表是链表的一种,线性链表的延伸有双向链表和环形链表.在编程语言中优化数据结构可以在处理大数据时大大降低程序的空间复杂性和时间复杂性.这里我只用一个简单的例子——线性单向链表为例,说明C语言是如何实现该结构的. 链表的元素是由结构体来实现struct table *p.结构体中有一个成员是结构体指针struct table *next,而这个结构体指针的类型和

随机推荐