用数组实现一个顺序栈
class ArrayStack:
def __init__(self, length):
self.stack = []
self.length = length
def is_empty(self):
if len(self.stack) == 0:
return True
return False
def push(self, element):
if len(self.stack) == self.length:
print("栈已满")
else:
self.stack.append(element)
def pop(self):
if len(self.stack) > 0:
return self.stack.pop()
else:
print("栈已空")
def show(self):
print(self.stack)
def clear(self):
self.stack.clear()
def peek(self):
return self.stack[len(self.stack)-1]
if __name__ == '__main__':
arrayStack = ArrayStack(3)
for i in range(4):
arrayStack.push(i)
arrayStack.show()
print("栈顶元素:", arrayStack.peek())
print(arrayStack.is_empty())
for i in range(4):
arrayStack.pop()
print(arrayStack.is_empty())
用链表实现一个链式栈
class Node:
def __init__(self, value=0, nex=None):
self.value = value
self.nex = nex
def __str__(self):
return str(self.value)
class LinkStack:
def __init__(self, length):
self.stack = Node()
self.length = length
self.max = 0
def push(self, value):
if self.stack.value is None:
self.stack.value = value
elif self.max < self.length:
node = Node(value=value, nex=self.stack)
self.stack = node
print(self.stack)
self.max += 1
else:
print("栈已满")
def pop(self):
if self.max > 0:
self.stack = self.stack.nex
self.max -= 1
else:
print("栈已空")
def peek(self):
return self.stack.value
def is_empty(self):
if self.stack.value is None:
return True
return False
if __name__ == '__main__':
linkStack = LinkStack(3)
for i in range(4):
linkStack.push(i)
print(linkStack.max)
for i in range(4):
linkStack.pop()
print(linkStack.max)
实现一个浏览器的前进、后退功能
class Browser:
def __init__(self):
self.next = []
self.previous = []
def advance(self):
if len(self.next) > 0:
self.next.pop()
self.previous.append('<')
else:
print('无法前进')
return
print(''.join(self.previous), ' ', ''.join(self.next))
def back(self):
if len(self.previous) > 0:
self.previous.pop()
self.next.append('>')
else:
print('无法后退')
return
print(''.join(self.previous), ' ', ''.join(self.next))
def new(self):
self.previous.append('<')
self.next.clear()
print(''.join(self.previous), ' ', ''.join(self.next))
if __name__ == '__main__':
browser = Browser()
browser.next = ['>', '>']
browser.previous = ['<', '<']
print("1后退,2前进,3新页面")
while True:
choice = int(input())
if choice == 1:
browser.back()
elif choice == 2:
browser.advance()
elif choice == 3:
browser.new()