栈(顺序存储结构)
#!/usr/bin/python3.5
#_*_coding:utf-8_*_
class Stack():
def __init__(self,capacity):
self.stack = [None] * capacity
self.capacity = capacity
self.top = -1
def push(self,element):
if self.full():
print('栈满')
return
self.top += 1
self.stack[self.top] = element
def pop(self):
if self.empty():
print('栈是空的')
return
element = self.stack[self.top]
self.stack[self.top] = None
self.top -= 1
return element
def empty(self):
return self.top == -1
def full(self):
return self.top == self.capacity - 1
def length(self):
return self.top + 1
def getTop(self):
if self.top == -1:
print('栈是空的')
return
return self.stack[self.top]
def clear(self):
while self.top != -1:
self.stack[self.top] = None
self.top -= 1
if __name__ == '__main__':
stack = Stack(10)
栈(链式结构)
class StackNode:
def __init__(self):
self.data = None
self.next = None
class LinkStack:
def __init__(self):
self.top = StackNode()
'''判断链栈是否为空'''
def IsEmptyStack(self):
if self.top.next == None:
iTop = True
else:
iTop = False
return iTop
'''进栈'''
def PushStack(self,da):
tStackNode = StackNode()
tStackNode.data = da
tStackNode.next = self.top.next
self.top.next = tStackNode
print("当前入栈的元素为:",da)
'''出栈'''
def PopStack(self):
if self.IsEmptyStack() == True:
return
else:
tStackNode = self.top.next
self.top.next = tStackNode.next
return tStackNode.data
'''获取栈顶元素'''
def GetTopStack(self):
if self.IsEmptyStack() == True:
return
else:
return self.top.next.data
'''反向输出链栈元素'''
def ReverseStackTraverse(self):
list1 = []
tStackNode = self.top.next
while tStackNode != None:
result = self.PopStack()
list1.append(result)
tStackNode = tStackNode.next
for i in list1[::-1]:
print(i,end = ' ')