python数据结构之栈

这里只是介绍下python实现的栈的定义:

栈的一个特点就是先进后出,看代码实现:

1
2
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
>>> class Stack:
... def __init__(self):
... self.items = []
... def isempty(self):
... return self.items == []
... def push(self,item):
... self.items.append(item)
... def pop(self):
... return self.items.pop()
... def peek(self):
... return self.items[len(self.items) - 1]
... def size(self):
... return len(self.items)
...
>>> s = Stack()
>>> type(s)
<class '__main__.Stack'>
>>> type(Stack)
<class 'type'>
>>> s.isempty()
True
>>> s.push(10)
>>> print(s)
<__main__.Stack object at 0x7f838a4c7320>
>>> s.peek()
10
>>> s.pop()
10
>>> s.isempty()
True
>>> s.push(3)
>>> s.push(0)
>>> s.peek()
0
>>> s.isempty()
False
>>> s.pop()
0
>>> s.pop()
3
>>> s.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 9, in pop
IndexError: pop from empty list

个人认为在pop()和peek()之前要判断下栈是不是空栈,这样才能保证数据的正确操作,但是尝试之后发现走不到这一步。这个需要之后去确认下。

  • push()函数是压栈函数,就是将元素压倒栈底。
  • pop()函数是弹栈函数,就是将栈顶的元素弹出来。
  • 栈的peek()方法的目的是查找在这个栈的顶部的对象,无需从栈中弹出。
  • isempty()函数用来判断是不是一个空栈
  • size()函数用来判断栈的大小,也就是栈里面元素的个数。