Python真是强大!C语言描述略微麻烦的栈在Python中用列表实现就变得很简单,以下是用列表描述栈,包括入栈、出栈、取栈顶元素、获取栈的长度、输出栈等操作:
class Stack(object):#定义栈类
def __init__(self):
self.__list = [] #初始化操作,定义空列表作栈
#入栈操作
def push(self,data):
self.__list.append(data) #把列表尾部当作栈顶,即尾插
# 把列表头部当作栈顶,头插,每次都把数据放在列表首部
# def push(self,data):
# self.__list.append(0,data)
#出栈操作
def pop(self):
self.__list.pop() #从列表的尾部删除元素即出栈
# 与之前被注释的入栈操作相对应,当栈顶是列表头部时每次出栈即删除首个元素
# def pop(self):
# self.__list.pop(0)
#返回栈顶元素
def Get_top(self):
#如果列表不为空继续操作,否则返回None
if self.__list:
return self.__list[-1]
else:
return None
#判断是否是空栈
def Empty(self):
if not self.__list:
return None
#获取栈的长度
def length(self):
return len(self.__list)
#输出整个栈
def Print(self):
for x in self.__list:
print(x)
if __name__ == '__main__':
s = Stack()
s.push(3)
s.push(4)
s.push(5)
print("\n该栈是:")
s.Print()
print("\n共"+str(s.length())+"个元素\n") #注意必须是str类型
print("栈顶元素是:"+str(s.Get_top())+'\n')
print("是否空栈:"+str(s.Empty())+'\n')
s.pop()
s.pop()
s.pop()
print("该栈是:")
s.Print()
print("\n共" + str(s.length()) + "个元素\n")
print("栈顶元素是:" + str(s.Get_top()) + '\n')
print("是否空栈:" + str(s.Empty()) + '\n')
以下是运行结果:
该栈是:
3
4
5
共3个元素
栈顶元素是:5
是否空栈:None
该栈是:
共0个元素
栈顶元素是:None
是否空栈:None