2024年HarmonyOS鸿蒙最新数据结构与算法基础-(4)(3),kotlin 桌面gui

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

​ 两端称呼并非关键,不同的数据结构的关键区别在于数据的增减方式

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

栈Stack🍰

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

这一端叫栈“顶top”,另一端叫****栈“底base”

日常生活中有很多栈的应用

盘子、托盘、书堆等

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

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

这种次序通常称为"后进先出LIFO": Last in First out

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

栈的特性:反转次序🍭

上图为python原生数据对象形成的栈

进栈和出栈的次序正好相反.

抽象数据类型(ADT -  Abstract Data Types)  ------------> " 栈 "  是一个有次序的数据集,每个数据仅从" 栈顶 " 一端加入到数据集中,从数据集中移除,栈具有后进先出LIFO的特性.

" 栈 " 的操作 🍬

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

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

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

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

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

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

考点1:

用Python实现ADT Stack🧁

注意细节: Stack 的两端对应list设置

可以将 List 的任意一端 ( index = 0 或者 - 1 )   —>设置为栈

我们选用 List 的末端 ( index = -1 ) 作为栈顶

这样栈的操作就可以通过对 list 的append 和 pop 来实现~

python中的赋值语句🍩

if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。
for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句。与except, finally, else配合使用处理在程序运行中出现的异常情况。
class语句。用于定义类型。
def语句。用于定义函数和类型的方法。
pass语句。表示此行为空,不运行任何操作。
assert语句。用于程序调适阶段时测试运行条件是否满足。
with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行退出后释放锁。
yield语句。在迭代器函数内使用,用于返回一个元素。
raise语句。抛出一个异常。
import语句。导入一个模块或包。常用写法:from module import name, import module as name, from module import name as anothername

时间复杂度基本单位是: 赋值语句

左为栈顶,时间复杂度为O(n) 🍨

#左边为顶,右边为低
class Stack:
    def \_\_init\_\_(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self,item):
        self.items.insert(0,item)

    def pop(self):
        return self.items.pop(0)

    def peek(self):
        return self.items[0]

    def size(self):
        return len(self.items)

时间复杂度基本单位是: 赋值语句

当左边为栈顶时,当我们往里面加入(pop)元素时,我们会发现后面的每个元素都会向后移一位,就像是排队的时候有个人突然插在前面,后面的人不得不向后退一位,他们等待的时间就会更长.如果有n个元素就会移动n位,所以当左边作为栈顶时,这个****栈的时间复杂度是O(n).

以下是左边作为栈顶时插入元素的示意图

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值