目录
5.1堆栈队列
5.1.1栈的实现
# 使用顺序表实现栈
# push:压栈
# 如果是顺序表,压栈和出栈最好是尾部,链表最好是头部
class Stack:
def __init__(self):
self.__list=[]
def push(self,item): # 入栈
return self.__list.append(item)
def pop(self): # 出栈
return self.__list.pop()
def peek(self): # 返回栈顶元素
if self.__list:
return self.__list[-1]
else:
return None
def is_empty(self): # 判空
return self.__list==[]
def size(self):
return len(self.__list)
if __name__ == '__main__':
s=Stack()
for i in range(5):
s.push(i)
for i in range(5):
print(s.pop())
5.1.2队列实现
class Queue:
def __init__(self):
self.__list = []
def enqueue(self, item): # 入队列
self.__list.append(item)
# self.__list.insert(0,item) # 出队大于入队
def dequeue(self):
return self.__list.pop(0)
def is_empty(self):
return self.__list==[]
def size(self):
return len(self.__list)
if __name__ == '__main__':
q = Queue()
for i in range(5):
q.enqueue(i)
for i in range(5):
print(q.dequeue())
5.1.3双端队列
class DQueue:
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 == []
def size(self):
return len(self.__list)
if __name__ == '__main__':
dq = DQueue()
for i in range(5):
dq.add_front(i * 2 + 1)
dq.add_rear(i * 2)
for i in range(5):
print('尾部:', dq.pop__rear())
print('头部:', dq.pop_front())