"); //-->
今天扣丁学堂给大家介绍一下关于pyhton视频教程之python实现堆栈堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。

我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。可先将Stack类写入文件stack.py,在其它程序文件中使用fromstackimportStack,然后就可以使用堆栈了。
stack.py的程序:
代码如下:
classStack():
def__init__(self,size):
self.size=size
self.stack=[]
self.top=-1
defpush(self,ele):#入栈之前检查栈是否已满
ifself.isfull():
raiseexception("outofrange")
else:
self.stack.append(ele)
self.top=self.top+1
defpop(self):#出栈之前检查栈是否为空
ifself.isempty():
raiseexception("stackisempty")
else:
self.top=self.top-1
returnself.stack.pop()
defisfull(self):
returnself.top+1==self.size
defisempty(self):
returnself.top==-1
再写一个程序文件,stacktest.py使用栈,内容如下:
代码如下:
#!/usr/bin/python
fromstackimportStack
s=Stack(20)
foriinrange(3):
s.push(i)
s.pop()
prints.isempty()
python实现队列
队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。
我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现队列的入队enqueue和出队dequeue的操作,上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列
代码如下:
classQueue():
def__init__(self,size):
self.size=size;
self.front=-1;
self.rear=-1;
self.queue=[];
defenqueue(self,ele):#入队操作
ifself.isfull():
raiseexception("queueisfull");
else:
self.queue.append(ele)
self.rear=self.rear+1
defdequeue(self):#出队操作
ifself.isempty():
raiseexception("queueisempty")
else:
self.front=self.front+1
returnself.queue[self.front]
defisfull(self):
returnself.rear-self.front+1==self.size
defisempty(self):
returnself.front==self.rear
q=Queue(10);
foriinrange(3):
q.enqueue(i)
printq.dequeue()
printq.isempty()
以上就是关于Python实现堆栈和队列的详细介绍。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
劳特巴赫Trace32系列培训(2) --PowerTrace助您实时跟踪软件运行
芯科科技助力涂鸦智能打造Matter over Thread模块,简化Matter设备开发
ATA 光驱接口命令标准
ATX电源接口
绿色能源趋势和对电源转换的影响
气相色谱传感器解决环境监测需求
CES 2025聚积科技携手合作伙伴 驱动下一波汽车转型
贸泽开售用于复杂AI视觉应用的Raspberry Pi Hailo 8L AI套件
下顿馆子,完美诠释了电子工程师为什么不愿意改设计?
Qorvo推出车规级UWB SoC芯片QPF5100Q,凭借可配置软件推动创新
ESP车身稳定系统视频
开关电源的输入电容
求教关于数字地和模拟地的问题??
ISO7816 智能卡标准
宽负载范围零电压开关三电平直流变换器
BMP转为PCB图的抄板软件(win)
如何去掉50周干扰
创新的液晶电视LED背光驱动解决方案
变压器的啸叫原因
瑞萨推出性能卓越的新型MOSFET
ZVSCS PWM全桥电路有限双极性控制电路的功率部分
改进型全桥移相ZVS-PWM DC/DC电路
如何尽量降低PCB板上的地噪声?
改进型移相全桥ZVS主电路
芯片中的RDL(重分布层)是什么?
用于零电压开关结构的新一代高电压CoolMOS
请教如何滤除电路中的低频噪声?
FS44b0图纸
如何解决可控硅调压电路的干扰问题
基本的三电平直流变换图