栈+队列
程序员文章站
2022-06-01 08:36:16
...
栈
特性:先进后出的数据结构
栈顶,栈尾
应用:每个浏览器都有一个返回按钮,当你浏览网页被放置在一个栈中(实际上是网页的地址),你现在查看的网页在顶部,你第一个查看的网页在底部,如果按返回按钮,将按相反的顺序浏览刚才的页面。
- Stack() 创建一个空的新栈,它不需要参数,并返回一个空栈。
- push(item)将一个新项添加到栈的顶部,它不需要item做参数并不返回任何内容。
- pop()从栈中删除顶部项。它不需要参数并返回item。栈被修改。
- peek()从栈返回顶部项,但不会删除它。不需要参数,不修改栈。
- isEmpty()测试栈是否为空,不需要参数,并返回布尔值。
- size()返回栈中的item数量,不需要参数,并返回一个整数
class Stack():
def __init__(self):
self.items = []
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return len(self.items) - 1
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print('栈顶元素下标:',stack.peek())
print(stack.isEmpty())
print('元素个数:',stack.size())
print(stack.pop())
print(stack.pop())
print(stack.pop())
输出:
队列
先进先出
- Queue()创建一个空的新队列,它不需要参数,并返回一个空队列。
- enqueue(item)将新项添加到队尾,它需要item作为参数,并不返回任何内容。
- dequeue()从队首移除项,它不需要参数并返回item,队列被修改。
- isEmpty()查看队列是否为空,它不需要参数,并返回布尔值。
- size()返回队列中的项数,它不要参数,并返回一个整数。
class Queue():
def __init__(self):
self.items =[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
class Queue():
def __init__(self):
self.items =[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
kids = ['A','B','C','D','E','F']
queue = Queue()
for kid in kids:
queue.enqueue(kid)
while queue.size() > 1:
for i in range(6):
kid = queue.dequeue()
queue.enqueue(kid)
queue.dequeue()
print("获胜的选手是:",queue.dequeue())