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

h5可以做网站么域名搜索引擎

h5可以做网站么,域名搜索引擎,四川省建设厅网站证,网站建设中 什么意思目录 0. 前言1. 了解堆栈2.代码实现3. 演示效果其他PyQt5文章 0. 前言 本文使用 PyQt5制作图形化界面演示数据结构中的堆栈操作 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库&…

目录

  • 0. 前言
  • 1. 了解堆栈
  • 2.代码实现
  • 3. 演示效果
  • 其他PyQt5文章

0. 前言

本文使用 PyQt5制作图形化界面演示数据结构中的堆栈操作

操作系统:Windows10 专业版

开发环境:Pycahrm Comunity 2022.3

Python解释器版本:Python3.8

第三方库:PyQt5

1. 了解堆栈

在计算机科学中,堆栈(Stack),也常被称为栈,是一种抽象的数据结构,它是一种只能从一个端添加元素和删除元素的线性数据结构。这一端被称为“栈顶”,相对地,把另一端称为“栈底”。根据这个定义,可以推断出后进先出(LIFO,Last In First Out)这个特性。

堆栈有以下几个基本操作:

  • push: 将一个元素添加到栈顶
  • pop: 从栈顶移除一个元素,并返回这个元素的值
  • peek/top: 返回栈顶的元素值,但不将其移除
  • is_empty: 返回栈是否为空

堆栈通常使用数组或链表实现。如果使用数组实现,需要考虑动态扩容的情况。如果使用链表实现,需要注意在链表头进行操作,否则操作的时间复杂度将变为O(n)。

堆栈通常用作典型的临时存储(例如在递归函数中存储函数的返回地址),或者是需要逆序输出元素的应用程序那么在这样的应用中,堆栈的弹出顺序就可以实现逆序的要求。

例如:
假设你要洗堆满了碗,你会把碗一层一层地往上堆放。当你洗完一个碗放入放碗柜时,你把刚才放在最上层的碗取下来,这就是一个栈的操作过程。

当你需要使用碗时,你从栈顶拿下一个碗。如果你拿下的碗与你想要使用的碗不一样,你就把拿下的碗再放回去,这样使用的就是最后一个放上去的碗。这个过程叫做“后进先出”,或者LIFO(Last In, First Out)

2.代码实现

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sysclass Node:def __init__(self, data):self.data = dataself.next = Noneclass Queue:def __init__(self):self.head = Noneself.tail = Nonedef enqueue(self, data):new_node = Node(data)if self.tail is None:self.head = new_nodeself.tail = new_nodeelse:self.tail.next = new_nodeself.tail = new_nodedef dequeue(self):if self.head is not None:data = self.head.dataself.head = self.head.nextif self.head is None:self.tail = Nonereturn dataelse:return Nonedef front(self):if self.head is not None:return self.head.dataelse:return Nonedef is_empty(self):return self.head is Nonedef display(self, scene):pen = QPen(QColor(0, 255, 0))font = QFont("Arial", 10)y = 100current_node = self.headwhile current_node is not None:# Draw node rectanglescene.addRect(50, y, 50, 50, pen)# Draw node texttext = scene.addText(str(current_node.data), font)text.setDefaultTextColor(QColor(255, 255, 255))text.setPos(70, y + 10)current_node = current_node.nexty += 70class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("Queue Demo")self.setFixedSize(500, 500)self.scene = QGraphicsScene(self)self.view = QGraphicsView(self.scene, self)self.view.setGeometry(0, 0, 500, 500)self.queue = Queue()self.queue.enqueue(10)self.queue.enqueue(20)self.queue.enqueue(30)self.queue.display(self.scene)# Add UI elementsenqueue_button = QPushButton("Enqueue", self)enqueue_button.move(10, 10)enqueue_button.clicked.connect(self.handle_enqueue)dequeue_button = QPushButton("Dequeue", self)dequeue_button.move(10, 40)dequeue_button.clicked.connect(self.handle_dequeue)front_button = QPushButton("Front", self)front_button.move(10, 70)front_button.clicked.connect(self.handle_front)clear_button = QPushButton("Clear", self)clear_button.move(10, 100)clear_button.clicked.connect(self.handle_clear)self.data_edit = QLineEdit(self)self.data_edit.move(100, 10)def handle_enqueue(self):data = self.data_edit.text()if data != "":self.queue.enqueue(data)self.scene.clear()self.queue.display(self.scene)def handle_dequeue(self):data = self.queue.dequeue()if data is not None:QMessageBox.information(self, "Dequeue", "Dequeued value: " + str(data))self.scene.clear()self.queue.display(self.scene)else:QMessageBox.warning(self, "Dequeue", "Queue is empty")def handle_front(self):data = self.queue.front()if data is not None:QMessageBox.information(self, "Front", "Front value: " + str(data))else:QMessageBox.warning(self, "Front", "Queue is empty")def handle_clear(self):self.queue = Queue()self.scene.clear()if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())

3. 演示效果

提供了四个操作:

  • 入栈
  • 出栈
  • 栈顶元素查询
  • 堆栈初始化(清空)

运行代码可以看到堆栈中是有三个元素(绿色框框)在其中,这是我们在代码中提前预设的三个值
在这里插入图片描述
现在输入13,然后将它Push到栈中,可以看到 多了一个元素:
在这里插入图片描述

然后取其Peek(顶端)的值,看看是否如愿:
在这里插入图片描述
如我们压入栈中的一样,就是13,但是并不会将它从栈中取出

现在我们将其Pop,看看会是怎样的情形:
在这里插入图片描述
在这里插入图片描述
执行完Pop操作后,将栈顶元素13取出,并且栈中也少了一个元素

其他PyQt5文章

基于PyQt5的图形化界面开发——自制MQTT客户端

基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]

基于PyQt5的图形化界面开发——模拟医院管理系统

基于PyQt5的图形化界面开发——自制ssh工具

基于PyQt5的图形化界面开发——PyQt示例_计算器

基于PyQt5的图形化界面开发——PyQt示例_扫雷

基于PyQt5的图形化界面开发——自制Redis图形化客户端(文末附源码)

基于PyQt5的图形化界面开发——堆栈动画演示

基于PyQt5的图形化界面开发——队列动画演示

http://www.hkea.cn/news/354159/

相关文章:

  • 无锡专业做网站的公司怎样把自己的产品放到网上销售
  • 大学网站建设管理办法推广技巧
  • 长春做网站公司seo关键词排名优化软件怎么选
  • 网站开发未按合同约定工期完工seo关键词排名怎么提升
  • 创可贴app海报制作网站百度seo优化方法
  • 龙岗品牌网站建设2024年新闻摘抄
  • 南阳住房和城乡建设厅网站招聘网站排名
  • 如何做网站活动封面建站的公司
  • 温州网站建设培训营销推广方案包括哪些内容
  • 厦门 建网站商业软文案例
  • wordpress读者墙站长之家seo工具包
  • 网站建设哪家好灵活苏州久远网络北京搜索引擎关键词优化
  • 网站优化怎么做 有什么技巧东莞seo建站
  • 什么网站可以做游戏机疫情最新数据消息
  • 企业网站开发报价单巩义网络推广
  • 网站开发技术交流群免费域名申请网站
  • 手机网站一键分享怎么知道自己的域名
  • 做网站 做好把我踢开北京网站搭建哪家好
  • 网站如何做引流刷外链网站
  • wordpress 站点地址关注公众号一单一结兼职
  • 合肥网站建设第一品牌个人seo外包
  • 省心的免费建站服务热线四川seo关键词工具
  • 网站总是跳转dede58seo对网络推广的作用是
  • seo排名怎么提高seo排名优化软件有用
  • 江门论坛建站模板黑帽seo联系方式
  • 政府网站信息内容建设专项检查搜索引擎排名优化seo课后题
  • 个人做的好的淘宝客网站软文营销推广
  • 城乡建设委员会网站河北seo推广公司
  • 某网站栏目策划2022十大热点事件及评析
  • 德清网站建设中心优化大师官方免费下载