我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python单向循环链表的创建方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python单向循环链表的创建方法

小编给大家分享一下Python单向循环链表的创建方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

python的五大特点是什么

python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如C++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。

1、说明

当实例化一个单向循环链表时,该链表是一个空链表,在将节点依次链接之后,链表中才会出现节点和数据。

在链表中,为了找到链表的某个节点,需要从链表的头节点开始,依次搜索。因此,在实例单向循环链表中,必须定义链表的头。当添加头节点时,链表的头指向头节点。

2、实例

class Node(object):    def __init__(self, elem):        """        :param elem: 表元素域        next:下一结点链接域        cursor(cur):游标        """        self.elem = elem        # 定义next指向空        self.next = None  class SingleCircularLinkList(object):    """    单向循环链表:单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为none,而是指向链表的头节点    """     def __init__(self, node=None):        self.__head = node  # node.elem node.next        if node:            node.next = node     def is_empty(self):        """链表是否为空   """        return self.__head is None     def length(self):        """链表长度"""        if self.is_empty():            return 0        # cur游标,用来移动遍历节点        cur = self.__head        count = 1        while cur.next != self.__head:            count += 1            cur = cur.next            # count 记录数量        return count     def travel(self):        """遍历整个链表"""        if self.is_empty():            return        cur = self.__head        while cur.next != self.__head:            print(cur.elem, end=' ')            cur = cur.next        # 退出循环,cur指向尾结点,但尾节点的元素未打印        print(cur.elem)     def add(self, item):        """链表头部添加元素:头插法"""        node = Node(item)        if self.is_empty():            self.__head = node            node.next = node        else:            cur = self.__head            while cur.next != self.__head:                cur = cur.next            # 退出循环,cur指向尾结点            node.next = self.__head            self.__head = node            # 方式1:cur.next = node            cur.next = self.__head  # 方式2     def append(self, item):        """链表尾部添加元素:尾插法"""        node = Node(item)        # 下一结点链接域不为空        if self.is_empty():            self.__head = node            node.next = node        else:            cur = self.__head            while cur.next != self.__head:                cur = cur.next            # 方式1:            # node.next = cur.next            # cur.next = node            # 方式2:            cur.next = node            node.next = self.__head     def insert(self, pos, item):        """        pos: pos从0开始        pre:指定节点前一节点,相当于游标        node:插入的指定节点        指定位置添加元素        """        # if pos<=0 头插法        if pos <= 0:            self.add(item)        # elif pos>(self.length()-1) 尾插法        elif pos > (self.length() - 1):            self.append(item)        # else 插入法        else:            pre = self.__head            count = 0            # 当循环退出后,pre指向pos-1            while count < (pos - 1):                count += 1                pre = pre.next            node = Node(item)            node.next = pre.next            pre.next = node     def remove(self, item):        """删除元素"""        # 考虑删除头部、尾部、中间节点        if self.is_empty():            return        cur = self.__head        pre = None        while cur.next != self.__head:            if cur.elem == item:                # 先判断是否是头节点                if cur == self.__head:                    # 找到尾节点                    rear = self.__head                    while rear.next != self.__head:                        rear = rear.next                    self.__head = cur.next                    rear.next = self.__head                else:                    # 中间节点                    pre.next = cur.next                return            else:                pre = cur                cur = cur.next        # 退出循环,cur指向尾结点        if cur.elem == item:            if cur == self.__head:                # 链表只有一个节点                self.__head = None            else:                pre.next = cur.next    def search(self, item):        """查找节点是否存在"""        if self.is_empty():            return False        # 1. 创建游标        cur = self.__head        # 2. 遍历游标        while cur.next != self.__head:            # 3. cur.elem = item            if cur.elem == item:                return True            else:                cur = cur.next        # 对于最后一个元素或只有一个元素        if cur.elem == item:            return True        return False  if __name__ == '__main__':    ll = SingleCircularLinkList()    ll.is_empty()    l1 = ll.length()    print(l1)     ll.append(55)    ll.is_empty()    l2 = ll.length()    print(l2)     ll.append(2)    ll.add(8)    ll.append(3)    ll.append(4)    ll.append(5)    # 55 1 8 2 3 4    ll.insert(-1,9) #  9 8 55 2 1 8 2345    ll.insert(2,100) #9 8 100 55 2 1 8 2345    ll.travel()

以上是“Python单向循环链表的创建方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python单向循环链表的创建方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python单向循环链表的创建方法

小编给大家分享一下Python单向循环链表的创建方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的五大特点是什么python的五大特点:1.简单易学
2023-06-14

python单向循环链表如何实现

本篇内容主要讲解“python单向循环链表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python单向循环链表如何实现”吧!单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链
2023-07-06

c语言如何创建双向循环链表

要创建一个双向循环链表,你可以按照以下步骤进行:1. 首先,定义一个节点结构体,包含一个数据域和两个指针域,分别指向前一个节点和后一个节点:```ctypedef struct Node {int data;struct Node* pre
2023-08-25

Python实现的单向循环链表功能示例

本文实例讲述了Python实现的单向循环链表功能。分享给大家供大家参考,具体如下: 概述: 单向循环链表是指在单链表的基础上,表的最后一个元素指向链表头结点,不再是为空。由图可知,单向循环链表的判断条件不再是表为空了,而变成了是否到表头。
2022-06-04

python单向链表的实现方法

这篇文章主要介绍了python单向链表的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int
2023-06-14

C语言无头单向非循环链表的操作方法有哪些

这篇文章主要介绍“C语言无头单向非循环链表的操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言无头单向非循环链表的操作方法有哪些”文章能帮助大家解决问题。链表引入问:上次我们看了顺序
2023-06-30

c语言单链表创建的方法是什么

创建一个单链表的方法可以有多种实现方式,以下是其中的一种常见方法:1. 定义一个链表节点的结构体,包含一个数据域和一个指向下一个节点的指针域。struct Node {int data;struct Node* next;};2. 创建链表
2023-10-18

Dreamweaver创建表单的方法

小编给大家分享一下Dreamweaver创建表单的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、打开Dreamweaver软件,鼠标左键选择新建【HTML
2023-06-08

C++中检测链表中的循环方法有哪些

这篇文章主要讲解了“C++中检测链表中的循环方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中检测链表中的循环方法有哪些”吧!给定一个链表,检查链表是否有循环。下图显示了带有循
2023-06-15

java数据结构中单链表与双向链表的实现方法

这篇文章主要介绍“java数据结构中单链表与双向链表的实现方法”,在日常操作中,相信很多人在java数据结构中单链表与双向链表的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java数据结构中单链表与
2023-06-20

python 循环遍历字典元素的简单方法

一个简单的for语句就能循环字典的所有键,就像处理序列一样:In [1]: d = {'x':1, 'y':2, 'z':3}In [2]: for key in d:...: print key, 'corresponds to',
2022-06-04

Python增量循环删除MySQL表数据的方法

需求场景:有一业务数据库,使用MySQL 5.5版本,每天会写入大量数据,需要不定期将多表中“指定时期前“的数据进行删除,在SQL SERVER中很容易实现,写几个WHILE循环就搞定,虽然MySQL中也存在类似功能,怎奈自己不精通,于是采
2022-06-04

python创建列表的方法有哪些

本篇内容主要讲解“python创建列表的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python创建列表的方法有哪些”吧!1、使用[]包裹列表中,每一个元素都是通过逗号、分割的。元素
2023-06-20

python创建空列表的方法有哪些

Python创建空列表的方法有以下几种:1. 使用中括号 []```pythonempty_list = []```2. 使用 list() 函数```pythonempty_list = list()```3. 使用内置的空列表对象 []
2023-08-09

Python中列表的创建方法有哪些

Python中列表的创建方法有以下几种:1. 使用方括号 [] 来创建一个空列表:pythonmy_list = []2. 使用方括号 [] 来创建一个包含初始元素的列表:pythonmy_list = [1, 2, 3, 4, 5]3.
2023-10-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录