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 18 Python
zbar解码二维码和条形码示例
Feb 07 Python
python统计一个文本中重复行数的方法
Nov 19 Python
Python多进程机制实例详解
Jul 02 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
浅析PHP与Python进行数据交互
May 15 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
Python爬虫使用代理IP的实现
Oct 27 Python
python selenium循环登陆网站的实现
Nov 04 Python
Python 自由定制表格的实现示例
Mar 20 Python
python 使用三引号时容易犯的小错误
Oct 21 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
PR值查询 | PageRank 查询
2006/12/20 PHP
php 读取文件乱码问题
2010/02/20 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
JS array 数组详解
2009/03/22 Javascript
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python常用正则表达式符号浅析
2014/08/13 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
python反扒机制的5种解决方法
2021/02/06 Python
港湾网络笔试题
2014/04/19 面试题
临床专业自荐信
2014/06/22 职场文书
农村门前三包责任书
2014/07/25 职场文书
2015年商场工作总结
2015/04/27 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
mysql sock文件存储了什么信息
2022/07/15 MySQL