简单链式表

# 完成双向循环链表的判空、尾插、遍历、尾删
class Node:def __init__(self, value):self.value = valueself.next = Noneself.prev = None
class Linklist:def __init__(self,node=None):self.head = nodeself.size = 0def is_empty(self):return self.size == 0def add_tail(self,value):node = Node(value)if self.is_empty():self.head = nodenode.next = nodenode.prev = nodeelse:cur = self.headwhile cur.next != self.head:cur = cur.nextcur.next = nodenode.prev = curnode.next = self.headself.head.prev = nodeself.size += 1def del_tail(self):pre=Noneif self.is_empty():print("链表为空,删除失败")else:if self.size == 1:self.head = Noneself.size -= 1returnelse:cur = self.headwhile cur.next !=self.head:pre=curcur=cur.nextpre.next=self.headself.head.prev=preself.size -= 1def show(self):if self.is_empty():print("链表为空")else:cur = self.headwhile cur.next != self.head:print(cur.value,end=" ")cur = cur.nextprint(cur.value)
if __name__ == "__main__":linklist = Linklist()linklist.add_tail(1)linklist.add_tail(2)linklist.add_tail(3)linklist.add_tail(4)linklist.add_tail(5)linklist.show()linklist.del_tail()linklist.show()linklist.del_tail()linklist.show()linklist.del_tail()linklist.show()linklist.del_tail()linklist.show()linklist.del_tail()linklist.show()
# 完成链式栈的:
# - 创建一个空栈
# - 添加数据
# - 遍历栈
# - 弹出栈顶元素(删除)
# - 返回栈顶元素
# - 判空
# - 栈的大小
class Node:def __init__(self,value):self.data = valueself.next = None
class Stack:def __init__(self,node=None):self.head = node#判空def is_empty(self):return self.head is Nonedef push(self,value):node = Node(value)if self.is_empty():self.head = nodeelse:node.next = self.headself.head = nodedef pop(self):if self.is_empty():print("栈为空")returnelse:self.head = self.head.nextdef show(self):if self.is_empty():print("栈为空")returnelse:cur = self.headwhile cur:print(cur.data,end=" ")cur = cur.nextprint()def size(self):cur = self.headcount = 0while cur:count += 1cur = cur.nextreturn countdef top(self):if self.is_empty():print("栈为空")returnelse:return self.head.dataif __name__ == "__main__":s = Stack()s.push(1)s.push(2)s.push(3)s.push(4)s.push(5)s.show()print(s.top())print(s.size())s.pop()s.pop()s.pop()s.show()

 

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

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

相关文章

流水线切分策略;通过自适应的重采样和重计算策略来优化计算资源和内存使用

目录 流水线切分策略 1,2,3,4,5指的计算任务(数据切分) 大方块代表GPU计算 黄色代表显存 通过自适应的重采样和重计算策略来优化计算资源和内存使用 一是自适应重计算(Adaptive Recomputation) 二是自适应划分(Adaptive Partitioning) 流水线切分策略 1,2,3,4,5指…

git: 修改gitlab仓库提交地址

git: 修改gitlab仓库提交地址 右键git bash here 1、进入到项目my-project所在位置 2、查看当前项目远程仓库地址 3、修改远程仓库地址 4、再次查看新的远程仓库地址以确认修改成功 cd /my-project git remote -v # 查看当前远程仓库地址 git remote set-url origin 新的Gi…

不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)-CSDN博客https://blog.csdn.net/Chunfeng6yugan/article/details/144005872?spm1001.2014.3001.5502 🙉在(上)篇博客中&#xf…

卷积神经网络(CNN)中的批量归一化层(Batch Normalization Layer)

批量归一化层(BatchNorm层),或简称为批量归一化(Batch Normalization),是深度学习中常用的一种技术,旨在加速神经网络的训练并提高收敛速度。 一、基本思想 为了让数据在训练过程中保持同一分布…

前端速通(CSS)

1.CSS介绍 1.什么是CSS? CSS(Cascading Style Sheets,层叠样式表)是一种用于控制网页的外观和布局的样式表语言。它与HTML(超文本标记语言)紧密配合,负责页面元素的样式定义,如字体、颜色、尺…

webkit浏览器内核编译(2024年11月份版本)

webkit浏览器内核编译 本文详细介绍了如何安装和配置Webkit的编译环境和工具的安装,以及在Windows上编译和运行WebKit浏览器引擎的过程,包括安装依赖、设置环境变量、生成解决方案并最终运行附带的MiniBrowser示例。 一、WebKit简介 WebKit 是一个开源的…

SQL注入--理论--堆叠注入

什么是堆叠注入? 在SQL语句操作的时候,每个语句都是以分号;标志结尾的。 在我们注入的过程中,通过使用多个分号同时进行多个SQL语句的注入,就是堆叠注入。 例如: ?inject1;handler 1919810931114514 open;handler 1…

鸿蒙操作系统(HarmonyOS)

鸿蒙操作系统(HarmonyOS)是华为公司开发的一款面向未来的全场景智慧生活操作系统。它旨在为不同设备的智能化、互联与协同提供统一的语言。鸿蒙提出的基于同一套系统能力、适配多种终端形态的分布式理念,是其核心竞争力之一。这一理念不仅使得…

C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示

七段数码管是一种经典的电子显示器件,广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板,介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目,这不仅是初学者理解数码管工作原理的好机会,也是C开…

本机上装好的ubuntu 全部的开发软件 如何备份以后移到另一台电脑上 还不会出现引导错误?

在Ubuntu系统上备份和迁移所有开发软件,可以按照以下步骤进行: 步骤 1: 备份已安装的软件列表 你可以使用dpkg命令来生成已安装软件的列表,并将其保存到一个文件中: dpkg --get-selections > installed_packages.txtDiffCop…

【Cesium】--viewer,entity,dataSource

viewer,entity,dataSource的关系 viewer.entities.add({}) 通过viwer.entities.add()直接加载的entity,默认是在viewer.entities(即viewer.dataSourceDisplay.defaultDataSource.entities)中,不会加载在viewer.dataSource中。 w…

Paddle Inference部署推理(三)

三:Paddle Inference推理 导出模型 Paddle Inference支持使用飞桨静态图模型进行推理,您可以通过以下两种方式获取静态图模型: (1)飞桨框架导出推理模型 飞桨框架在训练模型过程中,会在本地存储最终训练…

【国产MCU系列】-GD32F470-内部集成电路总线接口(I2C)

内部集成电路总线接口(I2C) 文章目录 内部集成电路总线接口(I2C)1、GD32F4的I2C模块介绍2、I2C控制器寄存器列表3、I2C工作模式3.1 I2C通讯流程3.2 主机模式发送数据流程3.3 主机模式数据接收流程3.4 DMA模式下数据传输4、I2C控制器相关API介绍5、I2C使用示例5.1 I2C主机模…

什么是Spring IOC和Spring AOP?

IOC就是控制反转,控制反转就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。它把由程序代码直接操控的对象的调用权交给容器,通过容器实现对象组件的管理和装配。 Srping IOC负责创建对象,管理对象,装配对…

非交换几何与黎曼ζ函数:数学中的一场革命性对话

非交换几何与黎曼ζ函数:数学中的一场革命性对话 非交换几何(Noncommutative Geometry, NCG)是数学的一个分支领域,它将经典的几何概念扩展到非交换代数的框架中。非交换代数是一种结合代数,其中乘积不是交换性的&…

【CSP CCF记录】201803-1第13次认证 跳一跳

题目 样例输入 1 1 2 2 2 1 1 2 2 0 样例输出 22 思路 没有技术含量的一道题,解题的关键是理解游戏规则。用state标记跳跃状态,以下是对游戏规则的分析: 1. state1,跳到方块上但没跳到中心,得1分 2. state2&#xf…

ALSA(2) ---- DMA实践

DMA实践 本篇文章主要是学习alsa高级音频框架总结而来,ALSA的Platform侧ADMA,学习总结而来,adma驱动来源于telechips产商805x芯片; ADMA物理拓扑图 ADMA物理拓扑图如上,RX和TX ADMA是接收和发送控制器,Ar…

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

c++(入门)

1. 引用 引用的定义 引用是另一个变量的别名,它在声明时必须被初始化,并且一旦初始化后,它就始终引用那个变量。 引用的语法 引用的声明方式是在变量名前加上&符号。 引用的特点 引用必须在声明时初始化。引用一旦初始化后&#x…

stm32内部高速晶振打开作为主时钟

首先建议你别这么干,因为内部晶振特别容易受温度等外界影响,很容易卡死或堵死程序 我是因为没画外部晶振电路,所以只能开内部晶振来作为时钟 适用于stm32f103系列 把下面的代码换掉源文件里的时钟源配置 /* 开启HSI 即内部晶振时钟 */RCC…