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实现的桶排序算法示例
Nov 29 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
pandas提升计算效率的一些方法汇总
May 30 Python
python开发的自动化运维工具ansible详解
Aug 07 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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
JavaScript字符串对象
2017/01/14 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python进程间通信之共享内存详解
2017/10/30 Python
浅谈python之新式类
2018/08/12 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
热门专业求职信
2014/05/24 职场文书
工作态度检讨书范文
2015/05/06 职场文书
离婚起诉书范本
2015/05/18 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python