当前位置: 首页 > news >正文

数据结构与算法-(11)---有序表(OrderedList)

🌈个人主页: Aileen_0v0
🔥系列专栏:PYTHON学习系列专栏
💫"没有罗马,那就自己创造罗马~" 

目录

知识回顾及总结 

有序表的引入

​编辑 实现有序表

1.有序表-类的构造方法

2.有序表-search方法的实现 

3.有序表-add方法的实现

有序链表 - 完整实现过程

链表分析


知识回顾及总结 

上一次我们学习了无序表之链表和列表,知道了链表的特点是顺藤摸瓜结构

通俗的讲就是链表相当于火车(如果元素放在链表后面,找那个车厢需要从头开始往后找)

有序表的引入

今天,我们来学习有序表- OrderedList-需要增加属性进行位置参照-所以需要对表头进行处理

有序表是一种数据项依照其某可比性质如整数大小、字母表先后)来决定在列表中的位置
数值越小位置越前,数值越大位置越后.

 

 实现有序表

1.有序表-类的构造方法

class Orderedlist:def __init__(self):self.head = None

2.有序表-search方法的实现 

 之前,我们无序表搜索,需要遍历节点,直到找到目标节点,或者没有节点可以继续访问.

但是,对于有序表,如果目标元素不在列表中,可以利用元素有序的特点终止寻找.

只要节点中的值比正在查找的值更大,搜索会立刻结束并返回False,因为查找的元素不可能存在于链表后续的节点中.

    def search(self,item):current = self.headfound = Falsestop = Falsewhile current != None and not found and not stop:if current.get_data() == item:found = Trueelse:if current.get_data()  > item:stop = Trueelse:current = current.get_next()return found

3.有序表-add方法的实现

相对于无序列表来说,有序列表,需要修改最多的是add方法.

对于无序表:add方法将一个节点放在最容易访问的位置,即列表头部.

对于有序列表:需要在需要在已有链表中,为新节点找到正确的插入位置.

当访问完所有节点(current是None) 或者 当前值大于要添加的元素时,就找到了插入位置,如上图中,找到54即可停止查找.

有序表和无序表一样,由于current本身无法提供对待修改节点进行访问,

因此我们需要额外引用previous

    def add(self,item):#初始化两个外部引用(作用相当于指针)current = self.head#指针1previous = None#p2stop = False#判断循环是否继续执行,---循环停止,就是找到了新节点的插入位置while current != None and not stop:#发现插入位置if current.get_data() > item:stop = Trueelse:previous = currentcurrent = current.get_next()temp = Node(item)#插在表头if previous == None:temp.set_next(self.head)self.head = temp#插在表中else:temp.set_next(current)previous.set_next(temp)

有序链表 - 完整实现过程

其它实现过程类似于无序表,可以自己尝试练习一下~

这里是我的实现过程,仅供大家学习参考.

class Node:#结点Node相当于车厢def __init__(self,init_data):self.data = init_dataself.next = None#获得数据项def get_data(self):return self.data#获得节点def get_next(self):return self.next#设置数据项def set_data(self,new_data):self.data = new_data#属性#设置节点def set_next(self,new_next):self.next = new_next#属性class Orderedlist:def __init__(self):self.head = Nonedef search(self,item):current = self.headfound = Falsestop = Falsewhile current != None and not found and not stop:if current.get_data() == item:found = Trueelse:if current.get_data()  > item:stop = Trueelse:current = current.get_next()return founddef add(self,item):current = self.head#指针1previous = None#p2stop = Falsewhile current != None and not stop:#发现插入位置if current.get_data() > item:stop = Trueelse:previous = currentcurrent = current.get_next()temp = Node(item)#插在表头if previous == None:temp.set_next(self.head)self.head = temp#插在表中else:temp.set_next(current)previous.set_next(temp)def size(self):current = self.headcount = 0while current != None:count += 1current = current.get_next()return countdef remove(self, item):current = self.headprevious = Nonefound = Falsewhile not found and current != None:if current.get_data() == item:found = Trueelse:previous = currentcurrent = current.get_next()if found:if previous == None:self.head = current.get_next()else:previous.set_next(current.get_next())def traverse(self):current = self.headwhile current != None:print(current.get_data())current = current.get_next()ol = Orderedlist()
ol.add(7)
ol.add(9)
ol.add(6)
ol.add(8)
ol.add(10)
print(ol.search(6))
ol.traverse()

链表分析

相关文章:

数据结构与算法-(11)---有序表(OrderedList)

🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON学习系列专栏 💫"没有罗马,那就自己创造罗马~" 目录 知识回顾及总结 有序表的引入 ​编辑 实现有序表 1.有序表-类的构造方法 2.有序表-search方法的实现 3.有序表-add方法的实现…...

佳易王会员管理系统软件如何下载,基本功能有哪些

一、佳易王会员管理软件大众版 部分功能简介: 1、会员信息登记 :可以直接使用手机号登记,也可以使用实体卡片,推荐用手机号即可。 2、会员卡类型 :可以自由设置卡的类型,比如:充值卡、计次卡、…...

docker搭建mysql环境

1. 基础环境 名称描述CentOS 7.6Linux操作系统版本docker 20.10.5docker版本mysql 8.0.29mysql镜像版本 2. 下载安装 使用docker命令下载mysql镜像 [rootzhouwei ~]# docker pull mysql:8.0.29查看docker仓库是否已经下载了mysql镜像 [rootzhouwei ~]# docker images将mys…...

优思学院|推行精益六西格玛困难重重?7大原因分析助你避坑

六西格玛,是一种让企业在绩效管理的舞台上跳得更高更远的方法。它不仅仅是一套原则和技术,更是一种对完美的执着追求。 在这个舞台上,企业的流程管理得以严格、集中,质量得以高效提升。优思学院总结出六西格玛的核心是&#xff1…...

四川思维跳动商务信息咨询有限公司可信吗?

在今天的数字化时代,抖音带货已成为一种全新的商业模式。许多公司都在通过这种形式进行产品推广和销售,其中,四川思维跳动商务信息咨询有限公司以其专业的服务和良好的信誉,在抖音带货领域赢得了广泛赞誉。 四川思维跳动商务信息…...

高防CDN与高防服务器:谁更胜一筹?

在当今数字化世界中,网络安全对于保护网站和应用程序至关重要。在这一背景下,高防CDN和高防服务器是两种流行的解决方案,用于应对不同类型的网络攻击。本文将分析高防CDN是否能够替代高防服务器,以及它们各自的优势和限制。 高防C…...

2.Netty简单应用

引入Maven依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId><version>4.1.49.Final</version> </dependency>服务端的管道处理器 public class NettyServerHandler extends ChannelInbou…...

80个10倍提升Excel技能的ChatGPT提示

你是否厌倦了在使用Excel时感觉像个新手&#xff1f;你是否想将你的技能提升到更高的水平&#xff0c;成为真正的Excel大师&#xff1f;嗯&#xff0c;如果你正在使用ChatGPT&#xff0c;那么成为Excel专家简直易如反掌。 你只需要了解一些最有用的Excel提示&#xff0c;就能在…...

jenkins结合k8s部署动态slave

1、完成k8s连接 在完成jenkins的部署后现安装kubernets的插件 如果jenkins 是部署在k8s集群中只需要填写一下 如果是非本集群的部署则需要填写证书等 cat ./config echo ‘certificate-authority-data-value’ | base64 -d > ./ca.crt echo ‘client-certificate-data’ |…...

搜索引擎Elasticsearch基础与实践

倒排索引 将文档中的内容分词&#xff0c;然后形成词条。记录每条词条与数据的唯一表示如id的对应关系&#xff0c;形成的产物就是倒排索引&#xff0c;如下图&#xff1a; ElasticSearch数据的存储和搜索原理 这里的索引库相当于mysql中的database。一个文档&#xff08;do…...

vue项目electron打包

1.设置国内镜像 npm config edit 命令行输入后会弹出npm的配置文档&#xff0c;需要文档末尾加入 electron_mirrorhttps://npm.taobao.org/mirrors/electron/ electron-builder-binaries_mirrorhttps://npm.taobao.org/mirrors/electron-builder-binaries/ 2.全局安装electron …...

英伟达发布RAPIDS cuDF框架 pandas在GPU上运行速度快了150倍

11月9日 消息&#xff1a;Nvidia 发布了一款名为 RAPIDS cuDF 的新版本&#xff0c;据称可以将 pandas 运行在 GPU 上&#xff0c;并且性能提升了150倍。pandas 是一款流行的基于 Python 的数据框架库&#xff0c;用于数据处理和分析。它的开源版本由 Wes McKinney 开发和发布&…...

(a)Mask RCNN总体流程

&#xff08;a&#xff09;Mask RCNN总体流程 一.Mask RCNN 架构 自己整理了一份Mask RCNN架构图如下&#xff0c;其中绿色模块只有推理过程才会涉及。 核心模块包括&#xff1a;数据预处理&#xff0c;骨干网络&#xff0c;区域提议网络&#xff0c;FastRCNN分支&#xff0c…...

浅谈数据中心机房末端配电技术与产品监控选型-安科瑞黄安南

摘要 数据中心机房末端配电的可靠性、稳定性和可维护性直接关系到IT设备的安全供电。数据中心的末端配电技术主要有两种&#xff0c;一种采用列头柜加电缆配电&#xff0c;另一种是智能小母线配电。分别对两种配电技术进行了介绍和探讨&#xff0c;最后对两种配电方式进行了对…...

红包算法 java实现

红包算法 首先&#xff0c;如果红包只有一个&#xff0c;本轮直接使用全部金额&#xff0c;确保红包发完。 然后&#xff0c; 计算出本次红包最少要领取多少&#xff0c;才能保证红包领完&#xff0c;即本轮下水位&#xff1b; 本轮最多领取多少&#xff0c;才能保证每个人都…...

MVCC中的可见性算法

在之前的文章 MVCC详解-CSDN博客中我们已经介绍过了MVCC的原理&#xff08;read viewundo log&#xff09;&#xff0c;今天来详细的说一下readview的匹配规则&#xff08;可见性算法&#xff09; 隔离级别在RC&#xff0c;RR的前提下 Read View是如何保证可见性判断的呢&#…...

Leetcode73矩阵置零

1110-3 代码&#xff1a; 和题解思路差不多 class Solution {public void setZeroes(int[][] matrix) {Set<Integer> setr new HashSet<>();Set<Integer> setc new HashSet<>();for(int i0;i<matrix.length;i){for(int j0;j<matrix[0].leng…...

linux重要的目录之proc和dev目录

/proc/目录 虚拟文件系统&#xff0c;将内核与进程状态归档为文本文件&#xff08;系统信息都存放这目录下&#xff09; Linux系统上的/proc目录是一种文件系统&#xff0c;即proc文件系统。与其它常见的文件系统不同的是&#xff0c;/proc是一种伪文件系统&#xff08;也即虚拟…...

【组件自定义事件+全局事件总线+消息订阅与发布+TodoList案例——编辑+过度与动画】

组件自定义事件全局事件总线消息订阅与发布TodoList案例——编辑过度与动画 1 组件自定义事件1.1 绑定1.2 解绑1.3 总结1.4 TodoList案例——自定义事件 2 全局事件总线2.1 理解2.2 步骤2.3 TodoList案例——事件总线 3 消息订阅与发布3.1 理解3.2 TodoList案例——消息的订阅与…...

单独封装export default .js 在引入

...

3个秘密技巧让Untrunc视频修复成功率提升200%

3个秘密技巧让Untrunc视频修复成功率提升200% 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 婚礼录像突然卡在关键瞬间&#xff0c;家庭聚会视频在欢声笑语中戛然而…...

如何高效永久保存微信聊天记录:WeChatMsg数据导出与智能分析终极指南

如何高效永久保存微信聊天记录&#xff1a;WeChatMsg数据导出与智能分析终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...

Mapbox与React构建交互式地图:反思性设计在可持续旅行工具中的实践

1. 项目概述&#xff1a;一个关于“慢旅行”的反思性工具最近几年&#xff0c;我越来越频繁地听到一个词&#xff1a;“过度旅游”。威尼斯、巴塞罗那、京都……这些曾经令人心驰神往的目的地&#xff0c;如今在社交媒体上更多地与拥挤的人潮、飙升的物价和当地居民的抗议联系在…...

状态图:优势与局限并存,W3C 规范助力,社区交流资源丰富

欢迎来到状态图的世界 什么是状态图呢&#xff1f;状态图有多种解释方式&#xff0c;下面会详细说明。本质上&#xff0c;状态图就是一种图形&#xff0c;比如这个简单的状态图&#xff1a;不过&#xff0c;对于想从本网站介绍中获益的软件工程师来说&#xff0c;这个图形作用不…...

Windows下C语言程序报错3221226356?别慌,这可能是你的malloc用错了

Windows下C语言程序报错3221226356&#xff1f;深入解析内存分配陷阱 刚接触C语言动态内存分配的程序员&#xff0c;经常会遇到程序突然崩溃并返回神秘错误码的情况。特别是在Windows平台上&#xff0c;3221226356这个看似随机的数字让无数初学者抓狂。实际上&#xff0c;这是段…...

别再只盯着FR4了!PCB板材选型避坑指南:从DK、Tg到CTE,手把手教你读懂关键参数

PCB板材选型实战指南&#xff1a;从参数解析到场景化决策 在高速数字电路和射频系统设计中&#xff0c;板材选择往往成为项目成败的关键变量。当信号速率突破10Gbps&#xff0c;当工作环境温度跨越-40℃到125℃的工业级范围&#xff0c;传统FR4的局限性开始显现。我曾亲眼见证过…...

IPXWrapper:现代Windows系统上的IPX/SPX协议兼容性解决方案

IPXWrapper&#xff1a;现代Windows系统上的IPX/SPX协议兼容性解决方案 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper IPXWrapper是一个开源兼容层项目&#xff0c;专门解决现代Windows操作系统&#xff08;从Vista开始&#x…...

LangGraph 持久化完全指南:从零搭建永不丢失状态的 AI Agent 系统

前言在构建 AI Agent 应用时&#xff0c;你是否遇到过这样的困扰&#xff1a;用户刚说完自己的需求&#xff0c;下一次提问时智能体就“失忆”了&#xff1b;工作流执行到一半时服务器意外崩溃&#xff0c;所有进度付之东流&#xff1b;一个涉及多次人工审核的复杂流程&#xf…...

全面数据恢复方案:TestDisk与PhotoRec的实战技术深度解析

全面数据恢复方案&#xff1a;TestDisk与PhotoRec的实战技术深度解析 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 数据丢失是技术人员和普通用户都可能面临的严峻挑战。TestDisk与PhotoRec作为开源数据恢…...

C ++输入输出基础教程示例详解

PS&#xff1a;使用前看是否包含了头文件 <cstdio>(一) 输入 scanfscanf 函数从标准输入&#xff08;键盘&#xff09;读取信息&#xff0c;按照格式描述把读入的信息转换为指定数据类型的数据&#xff0c;并把这些数据赋给指定的程序变量。下面提供一个标准模版&#xf…...