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

python数据结构——链表、栈、队列

一、思维梳理:

 二、双向循环链表:

class Node:def __init__(self,data):self.data = dataself.next = Noneself.prev = Noneclass DoubleLink:def __init__(self):self.size = 0self.head = Nonedef is_empty(self):return self.size == 0def add_end(self,data):node = Node(data)if self.is_empty():self.head = nodenode.next = nodenode.prev = nodeelse:q = self.head.prevnode.prev = qnode.next = self.headq.next = nodeself.head.prev = nodeself.size += 1def del_end(self):if self.is_empty():returnelse:if self.size == 1:self.head = Noneelse:q = self.head.prevself.head.prev = q.prevq.prev.next = self.headself.size -= 1def show(self):if self.is_empty():returnelse:q = self.headwhile q.next != self.head:print(q.data,end=" ")q = q.nextprint(q.data,end=" ")print()if __name__ == '__main__':doubleLink = DoubleLink()doubleLink.add_end(10)doubleLink.add_end(20)doubleLink.add_end(30)doubleLink.add_end(40)doubleLink.add_end(50)doubleLink.show()doubleLink.del_end()doubleLink.show()

 结果展示:

10 20 30 40 50 
10 20 30 40 

三、顺序栈:


class Stack:def __init__(self,capacity):self.capacity = capacityself.size = 0self.data = [None]*capacitydef is_empty(self):return self.size == 0def is_full(self):return self.size == self.capacitydef push(self,data):if self.is_full():returnself.data[self.size] = dataself.size += 1def pop(self):if self.is_empty():returnself.size -= 1def top(self):if self.is_empty():returnreturn self.data[self.size-1]def get_size(self):return self.sizedef show(self):for i in range(self.size-1,-1,-1):print(self.data[i],end=" ")print()if __name__ == '__main__':stack = Stack(100)stack.push(10)stack.push(20)stack.push(30)stack.push(40)stack.show()stack.pop()stack.show()

结果展示:

40 30 20 10 
30 20 10 

四、链式栈:

class Node:def __init__(self,data):self.data = dataself.next = Noneclass Stack:def __init__(self):self.size = 0self.top = Nonedef is_empty(self):return self.size == 0def push(self,data):node = Node(data)node.next = self.topself.top = nodeself.size += 1def pop(self):if self.is_empty():returnelse:self.top = self.top.nextself.size -= 1def get_top(self):if self.is_empty():returnreturn self.top.datadef get_size(self):return self.sizedef show(self):if self.is_empty():returnq = self.topwhile q:print(q.data,end=" ")q = q.nextprint()if __name__ == '__main__':stack = Stack()stack.push(10)stack.push(20)stack.push(30)stack.push(40)stack.push(50)stack.push(60)stack.show()stack.pop()stack.show()print(stack.get_top())print(stack.get_size())

结果展示:

60 50 40 30 20 10 
50 40 30 20 10 
50
5

相关文章:

python数据结构——链表、栈、队列

一、思维梳理: 二、双向循环链表: class Node:def __init__(self,data):self.data dataself.next Noneself.prev Noneclass DoubleLink:def __init__(self):self.size 0self.head Nonedef is_empty(self):return self.size 0def add_end(self,dat…...

centos操作系统如何更换yum镜像源

CentOS Linux 是一个免费提供的、社区支持的Linux发行版,由CentOS项目社区贡献者开发、分发和维护。2020年CentOS项目宣布将把全部投资转移到CentOS Stream,作为即将发布的 Red Hat Enterprise Linux版本的上游开发平台。因此,CentOS Linux更新和发布将在2021年至2024年期间…...

【Linux篇】自主Shell命令行解释器

📌 个人主页: 孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 文章目录 1. 获取用户名的接口2. 等待用户输入接口3. 将上述代码进行面向对象式的封装4. 命令行解析5.…...

Tomcat 部署 Jenkins.war 详细教程(含常见问题解决)

在Tomcat中部署Jenkins.war文件是一个相对简单的过程,以下是详细步骤: 1. 准备工作 确保已安装JDK:Jenkins需要Java环境,建议安装JDK 8或更高版本。 下载Jenkins.war:https://pan.quark.cn/s/c4fd7711a1b3 下载Tomc…...

我的创作纪念日-一周年

目录 机缘 收获 日常 成就 憧憬 机缘 时光荏苒,转行计算机已经是第5个年头了。从Python入门,到C入土,兜兜转转,发现自己也只是初窥门径,习得皮毛。我从6年前开始潜水CSDN,学习各路大佬的技术经验&…...

多线程代码案例 - 1

目录 单例模式 1. 饿汉模式 2. 懒汉模式 单例模式与多线程 问题1 问题2 问题3 完! 单例模式 单例模式是一种设计模式。 设计模式,是我们在编写代码时候的一种软性的规定,也就是说,我们遵守设计模式,代码的下限…...

display:none与visibility的区别

1. 是否占据空间 display: none:元素完全从文档流中移除,不占据任何布局空间。后续元素会“填补”它的位置。visibility:hidden:元素仍占据布局空间,但内容不可见(类似透明占位符)。 2.渲染与性能 displ…...

算法 | 基于蜣螂优化算法求解带时间窗的车辆路径问题(VRPTW)研究(附matlab代码)

基于蜣螂优化算法求解带时间窗的车辆路径问题(VRPTW)研究 🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏 摘要 带时间窗的车辆路径问题(VRPTW)是物流配送中的核心优化难题。本文提出一种基于蜣螂优化算法(Dung Beetle Optimizer, DBO)的求解方法,通过…...

开发体育赛事直播系统主播认证功能技术实现方案

该体育直播系统系统由东莞梦幻网络科技开发&#xff0c;使用 ThinkPHP 作为后端&#xff0c;Vue.js 作为 PC/H5 端框架&#xff0c;Java 和 Objective-C 分别用于安卓和 iOS 开发。 1、前端实现 (Vue.js) <template><div class"anchor-certification">…...

国产三维CAD「皇冠CAD」在汽车零部件领域建模教程:刹车片

本教程深度融合三维皇冠CAD&#xff08;CrownCAD&#xff09;的MBD&#xff08;Model-Based Definition&#xff09;设计理念&#xff0c;通过参数化建模、智能约束管理、动态装配验证等功能&#xff0c;实现数据驱动设计&#xff0c;精准解决了汽车制动系统中精密制动组件的设…...

基于指针的线程池

使用原线程池 当 push 和 pop的对象过大时&#xff0c;消耗时延过高&#xff0c;需优化线程池 采用 std::move&#xff08;&#xff09; unique_ptr的方法&#xff0c;能极大的减少时延&#xff0c; 实际就是避免了多次拷贝&#xff0c;直接使用指针。 代码实现 ThreadPool…...

GitHub与Gitee各是什么?它们的区别与联系是什么?

李升伟 整理 GitHub 介绍 GitHub 是一个基于 Git 的代码托管平台&#xff0c;主要用于版本控制和协作开发。它支持多人协作&#xff0c;提供代码托管、问题跟踪、代码审查、项目管理等功能。GitHub 是全球最大的开源社区&#xff0c;许多知名开源项目都在此托管。 主要功能&…...

SpringMvc获取请求数据

基本参数 RequestMapping("save5") ResponseBody public User save5(String name, int age) {User user new User();user.setName(name);user.setAge(age);return user; } 在url中将name与age进行编写&#xff0c;通过框架可以提取url中的name与age&#xff0c;这…...

简述竞赛经历在考研复试中的作用

文章目录 前言拟录取情况baichuicxyAshy佬齐总结回首展望 前言 随着就业形式的不断变化&#xff0c;竞赛奖项在就业中能起到的作用在逐步减弱。想拿到头部大厂实习面试资格&#xff0c;最低要区域赛银牌起步&#xff0c;当然这也仅仅是面试资格。 那么&#xff0c;竞赛经历在…...

大语言模型开发框架——LangChain

什么是LangChain LangChain是一个开发由语言模型驱动的应用程序的框架&#xff0c;它提供了一套工具、组件和接口&#xff0c;可以简化构建高级语言模型应用程序的过程。利用LangChain可以使应用程序具备两个能力&#xff1a; 上下文感知 将语言模型与上下文&#xff08;提示…...

Nginx 核心配置详解与性能优化最佳实践

1.什么是 Nginx&#xff1f; Nginx 是一个高性能的 Web 服务器和反向代理服务器。它轻量、高效&#xff0c;被广泛用于现代 Web 开发中。 2.为什么前端需要了解 Nginx&#xff1f; ★ 了解 本地开发&#xff1a;可以模拟生产环境 部署前端项目&#xff1a;作为静态文件服务器…...

机器学习的一百个概念(7)独热编码

前言 本文隶属于专栏《机器学习的一百个概念》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...

用LLama factory时报类似Process 2504721 got signal: 1的解决方法

之前用nohup来远程跑LLama factory微调脚本&#xff0c;是没有问题的&#xff0c;但今天发现运行类似下面这个命令时&#xff0c; nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一关闭ssh session&#xff0c;就会终止训练&#xff0c;报类似&…...

解决 Git 通过 SSH 克隆仓库时自动转换为 HTTPS 的问题

解决 Git 通过 SSH 克隆仓库时自动转换为 HTTPS 的问题 在使用 Git 通过 SSH 协议克隆私有仓库时&#xff0c;如果遇到类似以下错误&#xff1a; fatal: unable to access https://itlab.stack.net:stack.git/: Could not resolve host: gitlab.stack这通常是因为 Git 配置错…...

从实用的角度聊聊Linux下文本编辑器VIM

本文从实用的角度聊聊Vim的常用命令。何为实用&#xff1f;我举个不实用的例子大家就明白了&#xff0c;用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用&#xff0c;和Emacs并列成…...

多电机显示并排序

多电机显示并排序 要实现根据后端传递过来的驱动电机数据的数量来显示不同数量的数据列表&#xff0c;我们可以使用 Vue 的 v-for 指令来遍历 driveMotorData 数组&#xff0c;并为每个驱动电机生成一个数据列表。这样&#xff0c;无论后端传来多少个驱动电机的数据&#xff0…...

佳能imageRUNNER 2206N基本参数及管理员密码

基本参数&#xff1a; 产品类型 激光数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 速度类型 低速 最大原稿尺寸 A3 复印/打印方式 激光静电转印方式 感光材料 OPC 显影系统 干式单组分显影 定影…...

社交类 APP 设计:打造高用户粘性的界面

在当今数字化时代&#xff0c;社交类APP已成为人们日常生活中不可或缺的一部分。然而&#xff0c;随着市场竞争的加剧&#xff0c;如何通过设计提升用户粘性成为社交类APP成功的关键。本文将从设计的关键要素、用户界面优化、功能创新、个性化体验以及持续优化等方面&#xff0…...

数据编排与Dagster:解锁现代数据管理的核心工具

在数据驱动的时代&#xff0c;如何高效管理复杂的数据管道、确保数据质量并实现团队协作&#xff1f;本文深入探讨数据编排的核心概念&#xff0c;解析其与传统编排器的差异&#xff0c;并聚焦开源工具Dagster如何以“资产为中心”的理念革新数据开发流程&#xff0c;助力企业构…...

网络安全中的“后门”:概念、类型、作用与攻防技术

目录 什么是后门&#xff1f; 后门的常见类型 2.1 按植入方式分类 2.2 按功能分类 后门在安全测试中的作用 后门的玩法与免杀技术 4.1 常见后门技术 4.2 如何实现免杀&#xff08;Bypass AV&#xff09; 如何检测和防御后门&#xff1f; 总结 1. 什么是后门&#xff…...

AI | 大模型入门介绍

以下是关于AI大模型中蒸馏、量化、MoE和MHA技术的介绍&#xff1a; 1. 模型蒸馏&#xff08;Model Distillation&#xff09; • 定义&#xff1a;模型蒸馏是一种将大型复杂模型&#xff08;教师模型&#xff09;的知识转移到小型简单模型&#xff08;学生模型&#xff09;的技…...

Jmeter的压测使用

Jmeter基础功能回顾 一、创建Jmeter脚本 1、录制新建 &#xff08;1&#xff09;适用群体&#xff1a;初学者 2、手动创建 &#xff08;1&#xff09;需要了解Jmeter的常用组件 元件&#xff1a;多个类似功能组件的容器&#xff08;类似于类&#xff09; 各元件作用 组件…...

kubernetes》》k8s》》Deployment》》ClusterIP、LoadBalancer、Ingress 内部访问、外边访问

Nginx部署 K8s 集群内外访问服务的方式 节点 Kubernetes 集群中的服务器&#xff08;指单台&#xff09; 集群 Kubernetes 管理的一组服务器的集合 边界路由器 为局域网和Internet路由数据包的路由器&#xff0c;执行防火墙保护局域网络 集群网络 遵循Kubernetes网络模型实现集…...

Transformer 通关秘籍8:词向量如何表示近义词?

上一节已经完成了 token 到词向量的转换。那么&#xff0c;使用转换后的词嵌入向量便可以表示 token 之间的语义了吗&#xff1f;便可以表示两个单词是否是近义词&#xff0c;是否是反义词了吗&#xff1f; 是的。 接下来先通过一个例子&#xff0c;来直观地理解一下词嵌入向…...

Vue + Scss项目中实现自定义颜色主题的动态切换

当时面试的时候遇到面试官问的一个问题如何实现自定义颜色主题切换,当时我做的只是elementUIPlus提供的暗黑和默认主题切换​​​​​​​ theme.scss // 增加自定义主题类型 $themes: (light: (/* 原有配置保持不变 */),dark: (/* 原有配置保持不变 */),custom: () // 空映射…...