ps:栈的本质是列表,双端队列的本质也是列表
下图是基础代码及验证实例:
1、栈
class Stack(object):
'''栈'''
def __init__(self):
self.__items=[]
def is_empty(self):
'''判断是否为空'''
return self.__items == []
def push(self,items):
'''往尾部加入元素'''
self.__items.append(items)
def peek(self):
'''栈顶元素保持不变,只是查看'''
if self.__items:
return self.__items[-1]
else:
return []
def pop(self):
'''出栈'''
return self.__items.pop()
def is_empty(self):
'''判断是否为空'''
return not self.__items
def size(self):
'''返回的个数'''
return len(self.__items)
if __name__=='__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
2、双端队列:
class Deque(object):
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__":
s = Deque()
s.add_front(1)
s.add_front(2)
s.add_front(3)
s.add_front(4)
print(s.pop_rear())
print(s.pop_rear())
print(s.pop_rear())
print(s.pop_rear())