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命令行解析工具Argparse
Apr 20 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
python中时间模块的基本使用教程
May 14 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
Python urllib3软件包的使用说明
Nov 18 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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生成xml时添加CDATA标签的方法
2014/10/17 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
mac使用python识别图形验证码功能
2020/01/10 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
个人应聘自我评价分享
2013/11/18 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
赡养老人协议书
2014/04/21 职场文书
总结几个非常实用的Python库
2021/06/26 Python
vue elementUI表格控制对应列
2022/04/13 Vue.js