python如何对链表操作


Posted in Python onOctober 10, 2020

链表

链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。
由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。
也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。

代码

class Node():
  '创建节点'

  def __init__(self, data):
    self.data = data
    self.next = None


class LinkList():
  '创建列表'

  def __init__(self, node):
    '初始化列表'
    self.head = node    #链表的头部
    self.head.next = None
    self.tail = self.head #记录链表的尾部

  def add_node(self, node):
    '添加节点'
    self.tail.next = node
    self.tail = self.tail.next

  def view(self):
    '查看列表'
    node = self.head
    link_str = ''
    while node is not None:
      if node.next is not None:
        link_str += str(node.data) + '-->'
      else:
        link_str += str(node.data)
      node = node.next
    print('The Linklist is:' + link_str)

  def length(self):
    '列表长度'
    node = self.head
    count = 1
    while node.next is not None:
      count += 1
      node = node.next
    print('The length of linklist are %d' % count)
    return count

  def delete_node(self, index):
    '删除节点'
    if index + 1 > self.length():
      raise IndexError('index out of bounds')
    num = 0
    node = self.head
    while True:
      if num == index - 1:
        break
      node = node.next
      num += 1
    tmp_node = node.next
    node.next = node.next.next
    return tmp_node.data

  def find_node(self, index):
    '查看具体节点'
    if index + 1 > self.length():
      raise IndexError('index out of bounds')
    num = 0
    node = self.head
    while True:
      if num == index:
        break
      node = node.next
      num += 1
    return node.data


node1 = Node(3301)
node2 = Node(330104)
node3 = Node(330104005)
node4 = Node(330104005052)
node5 = Node(330104005052001)

linklist = LinkList(node1)
linklist.add_node(node2)
linklist.add_node(node3)
linklist.add_node(node4)
linklist.add_node(node5)


linklist.view()
linklist.length()

以上就是python如何对链表操作的详细内容,更多关于python 链表操作的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python的Django框架中显示对象子集的方法
Jul 21 Python
Python探索之创建二叉树
Oct 25 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
python中entry用法讲解
Dec 04 Python
Python timeit模块原理及使用方法
Oct 10 #Python
python实现自动打卡的示例代码
Oct 10 #Python
Python类绑定方法及非绑定方法实例解析
Oct 09 #Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 #Python
Python判断变量是否是None写法代码实例
Oct 09 #Python
Python尾递归优化实现代码及原理详解
Oct 09 #Python
Python hashlib模块的使用示例
Oct 09 #Python
You might like
php设计模式之单例模式使用示例
2014/01/20 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
JS之小练习代码
2008/10/12 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
python实现读取命令行参数的方法
2015/05/22 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
什么是类的返射机制
2016/02/06 面试题
请解释流与文件有什么不同
2016/07/29 面试题
面试求职的个人自我评价
2013/11/16 职场文书
医院护士的求职信范文
2013/12/26 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python