找回密码
 注册
关于网站域名变更的通知
查看: 151|回复: 0
打印 上一主题 下一主题

Python实现堆栈和队列详解

[复制链接]

该用户从未签到

跳转到指定楼层
#
 楼主| 发表于 2023-11-3 19:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
python实现堆栈

堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。

我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。可先将Stack类写入文件stack.py,在其它程序文件中使用from stack import Stack,然后就可以使用堆栈了。

stack.py的程序:

代码如下:


8 e% N# I( K9 @  U. e* N2 B$ ~  Z4 X

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

class Stack():  

    def __init__(self,size):  

        self.size=size

        self.stack=[]

        self.top=-1

    def push(self,ele):  #入栈之前检查栈是否已满  

        if self.isfull():  

            raise exception("out of range")

        else:  

            self.stack.append(ele)

            self.top=self.top+1

    def pop(self):             # 出栈之前检查栈是否为空  

        if self.isempty():  

            raise exception("stack is empty")

        else:  

            self.top=self.top-1

            return self.stack.pop()

      

    def isfull(self):  

        return self.top+1==self.size

    def isempty(self):  

1 a: J  z+ t" v: u0 S0 J

        return self.top==-1


* E/ l6 r! w% p3 t" w# D9 E

再写一个程序文件,stacktest.py 使用栈,内容如下:

代码如下:

1

2

3

4

5

6

7

#!/usr/bin/python

from stack import Stack

s=Stack(20)

for i in range(3):  

    s.push(i)

s.pop()

% _. U- g- i3 @5 d5 i1 A( U+ x4 Y

print s.isempty()

weibo.com/ttarticle/p/show?id=2309404963800309956654

weibo.com/ttarticle/p/show?id=2309404963800343511106

weibo.com/ttarticle/p/show?id=2309404963800368676885

weibo.com/ttarticle/p/show?id=2309404963800406425690

weibo.com/ttarticle/p/show?id=2309404963800439980172

weibo.com/ttarticle/p/show?id=2309404963800465145966

weibo.com/ttarticle/p/show?id=2309404963800485855281

weibo.com/ttarticle/p/show?id=2309404963800670666827

weibo.com/ttarticle/p/show?id=2309404963800725192722

weibo.com/ttarticle/p/show?id=2309404963800762941457

weibo.com/ttarticle/p/show?id=2309404963800809078882

weibo.com/ttarticle/p/show?id=2309404963800834244724

weibo.com/ttarticle/p/show?id=2309404963800855216133

weibo.com/ttarticle/p/show?id=2309404963800871993373

weibo.com/ttarticle/p/show?id=2309404963800892702727

weibo.com/ttarticle/p/show?id=2309404963800913936450

weibo.com/ttarticle/p/show?id=2309404963800934908008

weibo.com/ttarticle/p/show?id=2309404963800955617286

weibo.com/ttarticle/p/show?id=2309404963800985239578

weibo.com/ttarticle/p/show?id=2309404963801002016902

weibo.com/ttarticle/p/show?id=2309404963801052086305

weibo.com/ttarticle/p/show?id=2309404963801115000889

weibo.com/ttarticle/p/show?id=2309404963801157206086

weibo.com/ttarticle/p/show?id=2309404963801199149090

weibo.com/ttarticle/p/show?id=2309404963801232703534

weibo.com/ttarticle/p/show?id=2309404963801270452288

weibo.com/ttarticle/p/show?id=2309404963801291423986

weibo.com/ttarticle/p/show?id=2309404963801316589612

weibo.com/ttarticle/p/show?id=2309404963801337561139

1 T+ e$ ^8 n) w% H

weibo.com/ttarticle/p/show?id=2309404963801358532740

; }/ N9 a: X  n" s9 G6 i

python 实现队列

队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。

   我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现队列的入队enqueue和出队dequeue的操作,上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列

weibo.com/ttarticle/p/show?id=2309404964059492516280

weibo.com/ttarticle/p/show?id=2309404964059530264962

weibo.com/ttarticle/p/show?id=2309404964059572207761

weibo.com/ttarticle/p/show?id=2309404964059601568094

weibo.com/ttarticle/p/show?id=2309404964059920334999

weibo.com/ttarticle/p/show?id=2309404964059958083663

weibo.com/ttarticle/p/show?id=2309404964060083913002

weibo.com/ttarticle/p/show?id=2309404964060100689944

weibo.com/ttarticle/p/show?id=2309404964060113272898

weibo.com/ttarticle/p/show?id=2309404964060126118163

weibo.com/ttarticle/p/show?id=2309404964060138438902

weibo.com/ttarticle/p/show?id=2309404964060256141751

weibo.com/ttarticle/p/show?id=2309404964060268724386

weibo.com/ttarticle/p/show?id=2309404964060281307659

weibo.com/ttarticle/p/show?id=2309404964060293890641

weibo.com/ttarticle/p/show?id=2309404964060306211240

weibo.com/ttarticle/p/show?id=2309404964060449079625

weibo.com/ttarticle/p/show?id=2309404964060461400185

weibo.com/ttarticle/p/show?id=2309404964060474245719

weibo.com/ttarticle/p/show?id=2309404964060486828643

weibo.com/ttarticle/p/show?id=2309404964060709126637

weibo.com/ttarticle/p/show?id=2309404964060725903771

weibo.com/ttarticle/p/show?id=2309404964060742418546

weibo.com/ttarticle/p/show?id=2309404964060755263588

weibo.com/ttarticle/p/show?id=2309404964060767584572

weibo.com/ttarticle/p/show?id=2309404964060872442015

weibo.com/ttarticle/p/show?id=2309404964060906258715

weibo.com/ttarticle/p/show?id=2309404964060931162556

weibo.com/ttarticle/p/show?id=2309404964060973367685


/ }1 w0 C; L1 B2 X* X. Q

weibo.com/ttarticle/p/show?id=2309404964061002465341


% U# N$ q1 t4 e! T

代码如下:

1

20 j+ X7 t" ]2 c0 ^& t* O2 d

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

class Queue():  

    def __init__(self,size):  

        self.size=size;

        self.front=-1;  

        self.rear=-1;  

        self.queue=[];

    def enqueue(self,ele):  #入队操作  

        if self.isfull():  

            raise exception("queue is full");

        else:  

            self.queue.append(ele)

            self.rear=self.rear+1

    def dequeue(self):      #出队操作  

        if self.isempty():  

            raise exception("queue is empty")

        else:  

            self.front=self.front+1

            return self.queue[self.front]

    def isfull(self):  

        return self.rear-self.front+1==self.size

    def isempty(self):  

        return self.front==self.rear

      

q=Queue(10);  

for i in range(3):  

    q.enqueue(i)

print q.dequeue()


( t  i; h$ B7 z: b8 {( P

print q.isempty()


- W" C* T: ]7 L/ @  Vweibo.com/ttarticle/p/show?id=2309404964043600298502
7 H, \" z6 [7 o# ^8 i7 hweibo.com/ttarticle/p/show?id=2309404964043621270062  M' A0 J3 Q/ ]1 G" t
weibo.com/ttarticle/p/show?id=2309404964043638309435
2 v% S! y& D8 J# r* pweibo.com/ttarticle/p/show?id=2309404964043655086163
% _7 T1 ^/ g$ m. S& J4 `weibo.com/ttarticle/p/show?id=2309404964043713806364
; t6 q  q2 [4 Fweibo.com/ttarticle/p/show?id=23094049640437263892866 J3 @2 S  j3 J
weibo.com/ttarticle/p/show?id=23094049640437387101642 |9 w+ }( b' i) c) n
weibo.com/ttarticle/p/show?id=23094049640437512931817 @- H2 h& ]. f
weibo.com/ttarticle/p/show?id=2309404964043772526699/ R2 h7 `7 Q4 G8 U$ K- Z8 f  \
weibo.com/ttarticle/p/show?id=23094049640439232595409 D( P! |% w2 `2 m% |- ?& ~/ {- k
weibo.com/ttarticle/p/show?id=23094049640439358423594 K; J/ \* L& ]  f( i$ H
weibo.com/ttarticle/p/show?id=23094049640439486877111 _* q' w; {( @  f% f4 Y
weibo.com/ttarticle/p/show?id=2309404964043965202563/ Q7 X6 Q. P( b
weibo.com/ttarticle/p/show?id=23094049640439777856427 [, T8 F9 y; _0 V
weibo.com/ttarticle/p/show?id=2309404964044049088882& r4 O2 h$ X/ S, v# N
weibo.com/ttarticle/p/show?id=2309404964044196151334
% H2 n+ F) O6 d9 N3 j  lweibo.com/ttarticle/p/show?id=23094049640442758435591 |1 Z0 i7 H- @8 I* ^- ^8 d/ W; d
weibo.com/ttarticle/p/show?id=2309404964044430770628
. V( B. y4 M/ o+ N! `weibo.com/ttarticle/p/show?id=2309404964044451741764
2 W/ z2 ?( w, Oweibo.com/ttarticle/p/show?id=23094049640444645874194 ?, X7 Q0 g, |! v' @9 U
weibo.com/ttarticle/p/show?id=2309404964044485558495
8 _$ _5 Y, J+ j) }weibo.com/ttarticle/p/show?id=2309404964044497879732
9 v+ I( U: p( K$ X5 m4 W8 vweibo.com/ttarticle/p/show?id=2309404964044514656409- f! M0 K( H# `* T! Y; \
weibo.com/ttarticle/p/show?id=2309404964044535627823( V7 e- {# J: ]. n9 v0 a  H$ M
weibo.com/ttarticle/p/show?id=2309404964044552405070
& `+ k  H3 z2 b0 w# dweibo.com/ttarticle/p/show?id=2309404964044569444484
+ k' a( J$ k) ]7 \weibo.com/ttarticle/p/show?id=2309404964044586222041" W3 B7 M1 c; k; o; q! h
weibo.com/ttarticle/p/show?id=23094049640446111255765 u# r2 j( W, w: n! ^
weibo.com/ttarticle/p/show?id=2309404964044623970571
% Y4 w% r! f" P, y# u5 E! E* a& nweibo.com/ttarticle/p/show?id=23094049640446365533516 r$ W: j0 j' q+ h/ \* D8 G7 n/ K
weibo.com/ttarticle/p/show?id=23094049640446488740409 h' j7 P5 R% \* c# Y7 ~: M3 d. m
weibo.com/ttarticle/p/show?id=2309404964044657525363# H6 ?: q; m% A; U' x) |
weibo.com/ttarticle/p/show?id=2309404964044674040074
  ]' F2 R; B3 C* e, Sweibo.com/ttarticle/p/show?id=2309404964044686623056
2 E, R+ ^" s4 b) T! e' q# Tweibo.com/ttarticle/p/show?id=2309404964044699206002
/ r2 y$ _6 X6 J) C: C/ g; K& Xweibo.com/ttarticle/p/show?id=2309404964044711788669
2 d. x% M7 B" E. U& S' B& N- Vweibo.com/ttarticle/p/show?id=2309404964044724371645/ B! r3 {* ~$ w4 t8 x; W
weibo.com/ttarticle/p/show?id=2309404964044783354197
5 W) O7 d3 m. Y! A2 n7 C* y2 O+ A' z) i, s2 N8 b
% @/ U$ H1 ~4 V

8 p* I1 C% }5 v3 S% |5 e
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 21:35 , Processed in 0.187500 second(s), 25 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表