EDA365电子论坛网

标题: Python实现堆栈和队列详解 [打印本页]

作者: cmp830871    时间: 2023-11-3 19:04
标题: Python实现堆栈和队列详解
python实现堆栈

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

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

stack.py的程序:

代码如下:


. o$ H6 Q$ j1 C, L

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):  

* E( F: ^9 |( U0 \1 {3 M( Z

        return self.top==-1

: H. Z- M( N. X6 D

再写一个程序文件,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()

6 h$ X% h6 W" k/ @& w, t

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

0 l# D% S% L* _. f; Z, w5 n

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


" Z$ M4 i( K5 Y5 D

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


+ H# u9 ?. D; P+ F0 @2 }

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

+ V% E2 _7 x: t, _

代码如下:

1

2
7 q: J1 T, U0 E* B0 @. ]( j

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()

" z& U( k) Y, W7 Q

print q.isempty()


# n% i) `; J0 U. Y: }weibo.com/ttarticle/p/show?id=2309404964043600298502" [$ D5 v2 x+ o* G2 r4 h
weibo.com/ttarticle/p/show?id=2309404964043621270062: ?% O' J0 K. c" Y8 H, r4 J7 q
weibo.com/ttarticle/p/show?id=2309404964043638309435! u2 P9 ]& h7 i& ~# Z% p( e1 [
weibo.com/ttarticle/p/show?id=2309404964043655086163
9 v( l9 F9 y6 P6 Xweibo.com/ttarticle/p/show?id=2309404964043713806364
+ G+ K) t. T6 \( B! w, F2 L8 U! Zweibo.com/ttarticle/p/show?id=2309404964043726389286
3 D& b) T; A& D1 X, u: `* _* Yweibo.com/ttarticle/p/show?id=2309404964043738710164( D# a$ T0 b5 h2 ]" z/ [$ |
weibo.com/ttarticle/p/show?id=2309404964043751293181
1 @% H( c7 l$ [# b" d3 s6 nweibo.com/ttarticle/p/show?id=23094049640437725266999 L. P8 t2 M+ f- o; O$ ~: h& i4 k, ]
weibo.com/ttarticle/p/show?id=2309404964043923259540+ ~  L$ [) w" [5 U8 p8 z
weibo.com/ttarticle/p/show?id=2309404964043935842359
1 ^6 j& s+ x5 X0 A6 w& eweibo.com/ttarticle/p/show?id=2309404964043948687711. \: @  f) }8 w- Y2 p- d; F
weibo.com/ttarticle/p/show?id=2309404964043965202563
2 I5 n; [+ d# e( ^0 r% j* Tweibo.com/ttarticle/p/show?id=2309404964043977785642, {0 `* N/ `: I
weibo.com/ttarticle/p/show?id=2309404964044049088882
3 q0 g4 O- {) \) a; q" Oweibo.com/ttarticle/p/show?id=2309404964044196151334
( F* a& L5 m/ }9 ~$ C. v% ^& V+ J1 M( q  qweibo.com/ttarticle/p/show?id=2309404964044275843559
$ K/ G5 k1 A' P2 G* g) z$ E( tweibo.com/ttarticle/p/show?id=23094049640444307706289 `$ V! O: q3 L8 D( M) N
weibo.com/ttarticle/p/show?id=2309404964044451741764- l: y" J6 M# e# x& s- X6 \. M
weibo.com/ttarticle/p/show?id=2309404964044464587419
6 o; Z/ {7 Q3 @6 Tweibo.com/ttarticle/p/show?id=2309404964044485558495
( E( ~& f  t4 W" Q& Aweibo.com/ttarticle/p/show?id=2309404964044497879732
! K- V8 ?9 t1 p" F! j- e. i: }- eweibo.com/ttarticle/p/show?id=2309404964044514656409
9 P6 ]6 P+ t; O, w8 @' Qweibo.com/ttarticle/p/show?id=2309404964044535627823. R: ?3 ~6 c9 Y) K
weibo.com/ttarticle/p/show?id=2309404964044552405070! s/ W3 j9 a9 w& d/ V1 w7 b- l
weibo.com/ttarticle/p/show?id=2309404964044569444484
* V$ H1 H& D; n- Pweibo.com/ttarticle/p/show?id=2309404964044586222041
4 F3 g& n; a4 G( Qweibo.com/ttarticle/p/show?id=2309404964044611125576' E& _. O7 `6 y, M; r; o* G) t
weibo.com/ttarticle/p/show?id=2309404964044623970571
. F7 M4 M+ [7 O* ?0 k0 Y! Yweibo.com/ttarticle/p/show?id=2309404964044636553351
3 j7 `8 H: R6 @' B7 s" Hweibo.com/ttarticle/p/show?id=2309404964044648874040
$ W$ ~$ o) |+ z( ~weibo.com/ttarticle/p/show?id=2309404964044657525363
' w: R& T) M0 b" q( Z. s, Y! B' Y9 ]weibo.com/ttarticle/p/show?id=2309404964044674040074
0 J- [; P; i: M8 q& u, }weibo.com/ttarticle/p/show?id=2309404964044686623056
1 H( b$ v. ]  j( H. n0 ~( iweibo.com/ttarticle/p/show?id=23094049640446992060024 E- z: k9 _" v
weibo.com/ttarticle/p/show?id=2309404964044711788669
- y4 z: \( h8 w3 A1 Yweibo.com/ttarticle/p/show?id=2309404964044724371645
0 I9 b) W1 h2 u  @' vweibo.com/ttarticle/p/show?id=2309404964044783354197
/ n4 T  i3 v! n+ _- \% R& Q- {" I+ r" K7 u& |- g/ B8 L

% i( M% V- S9 n- C1 n9 Z3 V( R& h5 y  _- v" A$ \





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2