网络编程
位置:首页>> 网络编程>> Python编程>> python如何对链表操作

python如何对链表操作

作者:南方的墙  发布时间:2023-08-18 05:40:46 

标签:python,链表

链表

链表(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()

来源:https://www.cnblogs.com/shuzf/p/13786856.html

0
投稿

猜你喜欢

  • 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
  • 一、节点的定义dom节点树图中可见节点HTML文档中的每个成分都是一个节点:整个文档是一个文档节点每个HTML标签是一个元素节点包含在HTM
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容
  • 以前跟同事开玩笑时说过,我们遇到的用户在访谈测试过程中的表现基本上就三种类型,发泄型,赞美型和实话实说型。发泄型用户通常是在产品的使用过程中
  • SQL Server 6.5作为面向中小型企业的网络数据库服务系统,提供了 与众多高级数据库管理器相同的运行性能,向传统的数据库厂商发起了强
  • 前两天,班上同学写论文,需要将很多篇论文题目按照中文的习惯分词并统计每个词出现的频率。让我帮她实现这个功能,我在网上查了之后发现jieba这
  • FLASH 全屏有二类四种:1、不用浏览器直接用FLASH播放器播放的类型:A、不显示FLASH播放器菜单栏的全屏(类似屏保效果),在第一帧
  • 本文实例为大家分享了python实现录音功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-import
  • 本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。字
  • 废话不多说了,直接把我写的timeit函数分享给大家,具体内容如下:/** * Compute the delay to execute a
  • WordPress可以改造成twitter一样的微博网站,但是有一个坏处就是你要么用来做博客要么用来做微博,功能难兼得。相信大家在访问一些知
  • 如下所示:function makeAcquire($nUsers,$nAwards)    { &
  • 为你的网站,博客等添加rss聚合功能,给出rss.asp和rss.xml两种的聚合代码看过的朋友可帮忙顶哦,这些代码都是第一次发的,外面很多
  • 函数的递归调用:是函数嵌套调用的一种特殊形式具体是指:在调用一个函数的过程中又直接或间接地调用到了本身# 直接调用本身def func():
  • 因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。在学习python解析XML的时候看到
  • MVC模式MVC, 全名Model View Controller, 是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Mo
  • Object 类型的对象虽然有 toString 方法,但结果却是 [Object Object] 让人没法理解的字符。比如简单的对象:{n
  • TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它
  • 我正在开发一个档案管理系统,需要从数据库中同时调出图像及相关的文字说明,可我只做到了单纯地显示图片,像有一个数据库CHUNFENG,在数据库
  • 本文实例讲述了Python基于pandas实现json格式转换成dataframe的方法。分享给大家供大家参考,具体如下:# -*- cod
手机版 网络编程 asp之家 www.aspxhome.com