Python实现栈、队列、双端队列
栈的实现
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 self.items[len(self.items)-1] def isEmpty(self): return len(self.items) == 0 def size(self): return len(self.items) stack=Stack() stack.push(1) stack.push(2) stack.push(3) print(stack.peek()) print(stack.pop()) print(stack.pop()) print(stack.pop())
队列的实现
#coding:utf8 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 len(self.items) == 0 def size(self): return len(self.items) # queue = Queue() # queue.enqueue(1) # queue.enqueue(2) # queue.enqueue(3) # print(queue.size()) # print(queue.dequeue()) # print(queue.dequeue()) # print(queue.dequeue())
队列算法之烫手的山芋
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): queue.enqueue(queue.dequeue()) queue.dequeue() print(queue.dequeue())
双端队列的实现
# coding:utf8 # 队列 :尾部--->首部 class Deque(): def __init__(self): self.items = [] def addFront(self, item): self.items.append(item) def addRear(self, item): return self.items.insert(0, item) def removeFront(self): return self.items.pop() def removeRear(self): return self.items.pop(0) def isEmpty(self): return len(self.items) == 0 def size(self): return len(self.items)
双端队列算法之回文检测
# 实现回文检查 def isHuiWen(_str): flag = True deque = Deque() for i in _str: deque.addFront(i) while deque.size() > 1: if deque.removeFront() != deque.removeRear(): flag = False break return flag print(isHuiWen("hooh")) print(isHuiWen("hoioh")) print(isHuiWen("hoijoh"))