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 fabric实现远程操作和部署示例
Mar 25 Python
Python实现单词拼写检查
Apr 25 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
Python使用进程Process模块管理资源
Mar 05 Python
Python colormap库的安装和使用详情
Oct 06 Python
python collections模块的使用
Oct 16 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
如何获取numpy array前N个最大值
May 14 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
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP多文件上传实例
2015/07/09 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
关于js类的定义
2011/06/28 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python动态网页批量爬取
2016/02/14 Python
python学习之编写查询ip程序
2016/02/27 Python
设置python3为默认python的方法
2018/10/31 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
出纳岗位职责
2013/11/09 职场文书
劳动之星获奖感言
2014/02/01 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏