栈,队列,双端队列 功能实现
# 栈的功能实现
Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数
class Stack: # 初始化空栈 def __init__(self): self.__list = [] def push(self, item): self.__list.append(item) def pop(self): if self.__list: return self.__list.pop() else: return None def peek(self): if self.__list: return self.__list[-1] else: return None def is_empty(self): return self.__list is None def size(self): return len(self.__list) if __name__ == '__main__': s = Stack() s.push(1) s.push(2) s.push(3) print(s.pop()) print(s.pop()) print(s.pop())
# 队列的功能实现
l Queue() 创建一个新的空队列
l enqueue(item) 往队列中添加一个item元素
l dequeue() 从队列头部删除一个元素
l is_empty() 判断一个队列是否为空
l size() 返回队列的大小
# 定义队列 class Queue: # 初始化 def __init__(self): self.__list = [] def enqueue(self,item): self.__list.append(item) def dequeue(self): return self.__list.pop(0) def is_empty(self): return self.__list is None def size(self): return len(self.__list) if __name__ == '__main__': q = Queue() q.enqueue(1) q.enqueue(2) q.enqueue(3) print(q.dequeue()) print(q.dequeue()) print(q.dequeue())
3.双端队列的功能实现 Deque() 创建一个空的双端队列 add_front(item) 从队头加入一个item元素 add_rear(item) 从队尾加入一个item元素 pop_front() 从队头取一个item元素 pop_rear() 从队尾取一个item元素 is_empty() 判断双端队列是否为空 size() 返回队列的大小 class Deque: def __init__(self): self.__list = [] def add_front(self,item): self.__list.insert(0,item) def add_rear(self,item): self.__list.append(item) def pop_front(self): return self.__list.pop(0) def pop_rear(self): return self.__list.pop() def is_empty(self): return self.__list is None def size(self): return len(self.__list) if __name__ == '__main__': d = Deque() d.add_front(1) d.add_front(2) d.add_rear(3) d.add_rear(4) print(d.size()) print(d.pop_front()) print(d.pop_front()) print(d.pop_rear()) print(d.pop_rear())