python------栈和队列的实现

一、神马是栈

  古有粮仓,即为栈。粮仓的特点就是最后放进去的谷粒,放在最上面。打仗行军,取粮是怎么取最快?肯定是最先取最上面的!栈这一种常用到的数据结构就是这种特点:后进先出(Last In First Out - LIFO),即最先进去的,最后被取出。

二、栈的python实现

 1 class Stack():
 2     # 初始化栈为空列表
 3     def __init__(self):
 4         self.items=[]
 5     # 判断栈是否为空,返回布尔值False/True
 6     def isempty(self):
 7         return len(self.items)==0
 8     # 把新的元素堆进栈里面(入栈,进栈)
 9     def push(self,item):
10         self.items.append(item)
11     # 把栈顶元素丢出去(出栈)
12     def pop(self):
13         return self.items.pop()
14     # 返回栈的大小
15     def size(self):
16         return len(self.items)
17     # 返回栈顶元素
18     def peek(self):
19         return self.items[-1]
20 
21 if __name__ == '__main__':
22     # 初始化一个栈对象
23     my_stack = Stack()
24     # 把'h'丢进栈里
25     my_stack.push('h')
26     # 把'a'丢进栈里
27     my_stack.push('a')
28     # 看一下栈的大小(有几个元素)
29     print(my_stack.size())
30     # 打印栈顶元素
31     print(my_stack.peek())
32     # 把栈顶元素丢出去,并打印出来
33     print(my_stack.pop())
34     # 再看一下栈顶元素是谁
35     print(my_stack.peek())
36     # 这个时候栈的大小是多少?
37     print(my_stack.size())
38     # 再丢一个栈顶元素
39     print(my_stack.pop())
40     # 看一下栈的大小
41     print(my_stack.size)
42     # 栈是不是空了?
43     print(my_stack.isempty())

三、神马是队列

  与栈类似,但不同。超市购物排队付款就是队列,先到的最先付款,这种数据结构称为队列,即先进先出!

四、队列的python实现

class Queue():
    # 初始化队列为空列表
    def __init__(self):
        self.items=[]
    # 判断队列是否为空,返回布尔值False/True
    def isempty(self):
        return len(self.items)==0
    #入队
    def enqueue(self,item):
        self.items.insert(0,item)
    #出队
    def dequeue(self):
        return self.items.pop()
    #队列长度
    def size(self):
        return len(self.items)

 

转载于:https://www.cnblogs.com/I-love-Xiang/p/10074685.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值