栈
class Stack(object):
"""栈"""
def __init__(self):
self.__list = []
def push (self,item):
"""添加一个新的元素item到栈中"""
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()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
队列
class Quene(object):
"""队列"""
def __init__(self):
self.__list = []
def enquene(self,item):
"""队列一端添加一个item元素"""
self.__list.append(item)
def dequene(self):
"""队列另一端删除一个item元素"""
return self.__list.pop(0)
def is_empty(self):
"""判断一个队列是否为空"""
return self.__list == []
def size(self):
"""返回队列的大小"""
return len(self.__list)
if __name__ == '__main__':
q = Quene()
q.enquene(1)
q.enquene(2)
q.enquene(3)
q.enquene(4)
q.enquene(5)
print(q.dequene())
print(q.dequene())
print(q.dequene())
print(q.dequene())
print(q.dequene())
双端队伍
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__':
d = Deque()
d.add_front(1)
d.add_rear(99)
print(d.pop_front())