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实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
python中partial()基础用法说明
Dec 30 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python批量启动多线程代码实例
Feb 18 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 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中的日期处理方法集锦
2007/01/02 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
python实现在控制台输入密码不显示的方法
2015/07/02 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Django框架安装方法图文详解
2019/11/04 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
你对IPv6了解程度
2016/02/09 面试题
《木笛》教学反思
2014/03/01 职场文书
支部书记四风对照材料
2014/08/28 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
离职证明范本
2015/06/12 职场文书
员工聘用合同范本
2015/09/21 职场文书
同学联谊会邀请函
2019/06/24 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers