1. 时间复杂度(大O表示法)以及使用python实现栈

1.时间复杂度(大O表示法):

    O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

   

  (1)Python中常用数据结构的时间复杂度:

      list内置操作的时间复杂度:          

 

        

    dict内置操作的时间复杂度:

      

   (2)抽象数据类型(ADT: Abstract Data Type):

    常用数据运算(5种):

       增(插入)

       删(删除)

       改(修改)

       查(查找)

       排序

 

2. 栈的实现:

  (1)栈的表现形式:

     

  (2)栈的操作:

    Stack():    创建一个新的空栈

    push(item):添加一个新元素item到栈顶

    pop():    弹出栈顶元素

    peek():   返回栈顶元素

    is_empty(): 判断栈是否为空

    size():     返回栈的元素个数

  (3)实现栈:    

 

 1 class Stack(object):
 2     """栈的实现"""
 3     def __init__(self):
 4         self.__list = []
 5 
 6     # 添加一个新元素item到栈顶
 7     def push(self, item):
 8         self.__list.append(item)
 9 
10     # 弹出栈顶元素
11     def pop(self):
12         return self.__list.pop()
13 
14     # 返回栈顶元素
15     def peek(self):
16         if self.__list:
17             return self.__list[-1]
18         else:
19             return None
20 
21     # 判断栈是否为空
22     def is_empty(self):
23         return self.__list == []
24 
25     # 返回栈的元素个数
26     def size(self):
27         return len(self.__list)
28 
29 
30 if __name__ == "__main__":
31     s = Stack()
32     s.push(1)
33     s.push(2)
34     s.push(3)
35     s.push(4)
36 
37     print(s.pop())
38     print(s.pop())
39     print(s.pop())
40     print(s.pop())

      运行结果:

      

 

转载于:https://www.cnblogs.com/si-lei/p/9260476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值