Python实现栈的最基础操作
⼀、堆、栈和堆栈的区别
1.堆栈空间分配
1)栈(操作系统):由操作系统⾃动分配释放 ,存放函数的参数值,局部变量的值等。其操作⽅式类似于数据结构中的栈。
2)堆(操作系统): ⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配⽅式倒是类似于链表。
2.堆栈缓存⽅式
1)栈使⽤的是⼀级缓存, 他们通常都是被调⽤时处于存储空间中,调⽤完毕⽴即释放。
2)堆则是存放在⼆级缓存中,⽣命周期由虚拟机的垃圾回收算法来决定(并不是⼀旦成为孤⼉对象就能被回收)。所以调⽤这些对象的速度要相对来得低⼀些。
3.堆栈数据结构区别
1)堆(数据结构):堆可以被看成是⼀棵树,如:堆排序。
2)栈(数据结构):⼀种先进后出的数据结构。
⼆、Python实现栈操作
class Stack(object):
def__init__(self):
self._list=[]
def push(self,item):
self._list.append(item)
def pop(self):
"""弹出栈顶元素"""
return self._list.pop()
def peek(self):
if self._list:
return self._list[-1]
else:
return None
def is_empty(self):
return self._list==[]
python虚拟机def size(self):
return len(self._list)
if __name__ =="__main__":
s = Stack()
s.push(4)#4⼊栈
s.push(5)#5⼊栈
print(s.peek())#输出此时栈顶元素答案是5,图⽚中的红⾊框
s.push(6)#6⼊栈
s.push(7)#7⼊栈
print(s.size())#输出此时栈的长度答案是4,图⽚中的深蓝框
print(s.pop())#弹出栈顶元素7并输出
print(s.pop())#弹出栈顶元素6并输出
print(s.pop())#弹出栈顶元素5并输出
print(s.pop())#弹出栈顶元素4并输出
print(s.is_empty())#验证栈是否为空但是是True 图⽚中的灰⾊框
按照先后顺序将4、5、6、7⼊栈,并调⽤了push()、peek()、size()、is_empty()⽅法。