栈和队列
栈 一种容器保存线性数据 在一端插入删除
后进先出 LIFO last in first out
队列 只允许在一端进行插入操作 在另一端进行删除操作
先进先出FIFO first in first out
栈的实现\
class Stack(object):
"""栈"""
def __init__(self):
self.__list = []
def is_empty(self):
return self.size(self.items) == 0
# return not self.__list 空列表相当于False
def push(self, item):
"""添加一个新的元素item到栈顶"""
self.__list.append(item)
#self.__list.insert(0, item)
def peek(self):
"""返回栈顶元素"""
if self.__list:
return self.__list[-1]
else:
return None
def pop(self):
"""弹出栈顶元素"""
return self.__list.pop()
def size(self):
"""返回栈元素个数"""
return len(self.__list)
if __name__ == "__main__":
s = Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
队列的实现
class Queue(object):
"""队列"""
def __init__(self):
self.__queue = []
def enqueue(self, item):
self.__queue.append(item)
# self.__queue.insert(0, item)
def dequeue(self):
return self.__queue.pop(0) # pop是默认的列表方法参数指定弹出元素,从尾部填从头部弹出
# 若为双端队列,则另一种头部填入尾部弹出也分别写为两个方法
# return self.pop()
def is_empty(self):
return len(self.__queue) == 0
def size(self):
return len(self.__queue)
if __name__ == "__main__":
s = Queue()
s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print(s.dequeue())
print(s.dequeue())