实现一个栈的数据结构,使其具有以下方法:压栈,弹栈,取栈顶元素,判断栈是否为空以及获取栈中元素个数。
我们采用数组去实现栈,栈是一段连续的空间。我们把数组首个元素作为栈底,假设数字首个元素的地址为arr。同时记录栈中元素个数size,压栈操作即为数组的size+操作,弹栈即为数组arr[size-1],然后执行size-操作。
示例代码如下:
#encoding:utf-8
class MyStack:
#模拟栈
def __init__(self):
self.items = []
#判断栈是否为空
def isEmpty(self):
return len(self.items) == 0
#返回栈的大小
def size(self):
return len(self.items)
#返回栈顶元素
def top(self):
if not self.isEmpty():
return self.items[len(self.items)-1]
else:
return None
#弹栈
def pop(self):
if len(self.items)>0:
return self.items.pop()
else:
print("栈已经为空")
return None
#压栈
def push(self,item):
self.items.append(item)
if __name__ == "__main__":
s = MyStack()
s.push(4)
print("栈顶元素为:"+str(s.top()))
print("栈的大小为:"+str(s.size()))
s.pop()
print("弹栈成功")
s.pop()