北大陈斌Python算法笔记(一)

news2024/12/26 23:22:41

前言

🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。

🍁个人主页:红中

🍂不就是蓝桥杯嘛,干他!!我堂堂 

线性结构

线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继

除了第一个没有前驱,最后一个没有后继

新的数据项加入到数据集中时,只会加入到原有某个数据项之前或者之后,不会加到其他特殊的空间中

具有这种性质的数据集就被称为线性结构


线性结构总有两端,在不同的情况下,两端的称呼也不同

有时候称为“左”,“右”端、“前”,“后”端、“顶”,“底”端

 

 两端的称呼并不是关键,不同线性结构的关键区别在于数据项增减的方式

有的结构只允许数据项从一端添加,而有的结构则允许数据项从两端移除

 接下来从四个有代表性的来研究数据结构,分别是:

  1. 结构栈
  2. 队列
  3. 双端队列
  4. 列表

这些结构的共同点在于他们都是线性结构,只存在先后的次序关系


栈抽象数据类型以及Python实现

什么是栈

一种有次序的数据项集合,在栈中,数据项的加入和移除都只发生在同一端

这一端叫

栈顶(top)

另一端叫

栈底(base)

 日常生活中的栈


距离栈底越近的数据项,留在栈中的时间就越长

而最新加入栈的数据项会被最先移除

 怎么说呢,就类似于从箱子里取书吧

如果想拿最底下的,你总不能把箱子拆了

那就得从第一本开始往外拿

这种次序被称为后进先出

这是一种基于数据项保存时间的次序,时间越短的离栈顶越近,而时间越长的离栈底越近

栈的特性:反转次序

进栈与出栈的次序正好相反

来观察一个由混合的python组成的原生栈

 左侧的1st、2st等是放入的顺序,右侧则是取出顺序

8.4为栈顶数据,4为栈底数据

抽象数据类型

抽象数据类型“栈”

是一个有次序的数据集,每个数据项只从“栈顶”一端加入数据集中、从数据集中移除,栈具有后进先出的特性(简称为LIFO)

 

抽象类型数据栈定义为如下操作

Stack():创建一个空栈,不包含任何数据项

push(item):将item加到栈顶,无返回值

pop():移除顶端数据并返回,栈被修改

peek():“窥视”栈顶数据项,返回栈顶的数据项但不移除且栈不被修改

isEmpty():返回栈是否为空栈

size():返回栈中有多少个数据项

以下为应用例子

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优先级反转问题及解决办法

优先级反转问题及解决办法什么是优先级反转解决方法1:优先级继承解决方法2:优先级天花板总结什么是优先级反转 优先级反转,是指在多线程的环境下,并且使用了信号量时,可能会出现的这样一种不合理的现象,即…

@PostConstruct 和 @PreDestroy 使用

目录1.简介2.使用3.注意事项4.执行顺序5.测试6.测试结果1.简介 PostConstruct: Java 自带的注解,在方法上使用该注解,会在项目启动的时候执行被修饰的方法。 PreDestroy: Java 自带的注解,在方法上使用该注解&#xff…

element 日期选择器数据更改,第一次进入页面,页面上没有回显(数据格式问题导致)

需求 页面列表数据,默认是展示一个月的数据 遇到的问题 一进来页面,日期选择器上是空的,但绑定的值是有数据的,页面上并没正确回显,但是去手动选择日期,也是可以正常回显的 思考 其实,选择…

【MySQL进阶教程】 索引详细介绍

前言 本文为 【MySQL进阶教程】 索引 相关知识介绍,下边具体将对索引概述,索引结构(包括:索引结构概述,二叉树,B-Tree,BTree,Hash),索引分类,索引…

leetcode练习之商品折扣后的最终价格(单调栈算法)

题目描述 给你一个数组 prices &#xff0c;其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动&#xff0c;如果你要买第 i 件商品&#xff0c;那么你可以得到与 prices[j] 相等的折扣&#xff0c;其中 j 是满足 j > i 且 prices[j] < prices[i] 的 最…

JdbcUtils工具类的优化升级——通过配置文件连接mysql8.0,并对mysql8.0中的表进行[简单查询]操作

目录 一、在DogDao中新增查询的功能 二、在DogDaoImpl类中继承基类&#xff0c;并实现接口的功能 三、创建工具接口RowMapper 四、重新定义一个基类BaseDao2 五、新建一个DogDaoImpl2实现类&#xff0c;继承基类BaseDao2&#xff0c;实现DogDao接口的两个查询功能 六、在…

【Kotlin】函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

文章目录一、函数引用作为函数参数二、函数类型作为函数返回值一、函数引用作为函数参数 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;传递 函数引用 作为参数值 ; 函数引用 可以将 具名函数 转为 函数的参数值 , 只要可以使用 Lambda 表…

程序员真是越来越懒了,Api 文档都懒得写?程序员:Api工具惯的!

关于大多数程序员不爱写文档问题&#xff0c; 我觉得可以从两个方面去拆解&#xff1a;主观原因、客观原因。 1. 客观 - 时间紧任务重&#xff0c;需求变化快 需求方每次都是紧急需求&#xff0c;老板每次都要求敏捷开发&#xff0c;快速响应。 按时交付的压力已经让大多数程…

区分: 小程序组件 and 小程序插件

近期发现有不少小伙伴分不清小程序组件和小程序插件&#xff0c;以为它们是一回事&#xff0c;只是措辞不一样。但实际上&#xff0c;小程序组件和小程序插件完全是两回事——插件是可以直接提供服务的&#xff0c;组件是给开发者提供的轮子&#xff0c;不能直接提供服务。下面…

Java--基本数据类型

文章目录前言一、数据类型-byte二、数据类型-short三、数据类型-int四、数据类型-long五、数据类型-float六、数据类型-double七、数据类型-char八、数据类型-boolean九、数据类型实例前言 Java提供了八种基本类型&#xff0c;六种数字类型&#xff08;四个整数型&#xff0c;…

LoRa无线远传水表方案ASR6500S/LLCC68

LoRa无线远传水表就是普通机械水表加上电子采集发讯模块而组成&#xff0c;电子模块完成信号采集、数据处理、存储并将数据通过通信线路上传给中继器、或手持式的抄表器。LoRa无线远传水表作为市面上比较火的智能水表&#xff1b;由主站通过传输媒体将多个户用仪表的数据集中抄…

MyBatis讲解,批量删除1

一、批量删除1 入参字符串 ”id1,id2,id3” 批量删除的关键字是 in 1.书写BookMapper 1.1先在navicat的新建查询里书写批量删除的sql语句 批量删除的sql语句 delete from book where id in (12,22); 1.2将sql语句复制到BookMapper里 2.书写BookDao批量删除方法 *书写dao…

【安全硬件】Chap.4 如何插入一个硬件木马到芯片的时序逻辑电路的漏洞里?如何构建可信赖的状态机?

【安全硬件】Chap.4 如何插入一个硬件木马到芯片的时序逻辑电路的漏洞里&#xff1f;如何构建可信赖的状态机&#xff1f;前言&#xff1a;硬件木马1. 时序逻辑电路中的设计漏洞Design Vulnerabilities序列检测器的设计漏洞——以智能门锁的虚位密码漏洞为例易受攻击的状态机写…

Qt基础之十八:WebEngine与JavaScript交互

Qt从5.6开始就用Qt Webengine替换了Qt WebKit,据说加载速度较Qt WebKit更快。 需在pro中添加QT += webenginewidgets 一.效果 二.实现 1.JavaScript调用Qt函数 在MainWindow中定义成员变量QWebChannel *m_channel;作为和web通信的数据通道 ①加载网页 void MainWindow::l…

多线程案例-阻塞式队列

1.什么是阻塞队列阻塞队列是一种特殊的队列,在"先进先出"的原则下又引入了"阻塞"功能阻塞队列能是一种线程安全的数据结构,具有以下特性:当队列满的时候,继续入队列就会阻塞,直到其它线程从队列中取走元素当队列空的时候,继续出队列就会阻塞,直到其它队列向…

内蒙古大学计算机考研893计算机考研真题分享

内蒙古大学计算机学院成立于1997年&#xff0c;软件学院成立于2005年&#xff0c;与计算机学院为一个实体&#xff0c;两个牌子。 目前&#xff0c;学院由计算机科学系、软件工程系、信息管理系和计算中心&#xff08;实验中心&#xff09;组成&#xff0c;设有计算机科学与技…

uniapp开发小程序引入微信快递跟踪(快递100)插件

目录 1.小程序插件接入 2.代码示例 3.页面接收参数 4.常用快递100公司编码表 1.小程序插件接入 微信快递100插件地址&#xff1a;快递100-快递查询&#xff08;免费接入&#xff09; | 微信服务市场 (qq.com) 1&#xff09;进入链接地址 2&#xff09;登陆开发小程序的账…

二叉树18:从中序与后序遍历序列构造二叉树

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;344. 反转字符串 题目&#xff1a; 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的…

最全Go select底层原理,一文学透高频用法

导语 |在日常开发中&#xff0c;select语句被高频使用。但目前&#xff0c;全网分析select在编译期和运行时的完整底层原理资料&#xff0c;非常匮乏。本文基于Go1.18.1版本的源码&#xff0c;讲解select访问Channel在编译期和运行时的底层原理——select编译器优化用到的src/c…

2022年第十二届APMCM亚太杯1月增赛E题发布

2022年亚洲及太平洋地区建模数学竞赛问题E 有多少颗核弹可以摧毁地球? 1945年8月6日&#xff0c;第二次世界大战接近尾声。为了尽快结束战争&#xff0c;美国在日本广岛投下了名为"小男孩"的下一颗原子弹。这样一颗原子弹炸死了广岛的200000人&#xff0c;广岛的所有…