数据结构之栈与队列
栈,也称堆栈,特点在于只能对容器一端进行增加和删减,即先进先出
队列是只允许在一端进行插入,另一端进行删除的线性表,可概括为先进先出
双端队列,既具有队列特性也具有栈的特性,两端都可入列和出队
栈的操作
栈的实现
class Stack(object):
def __init__(self):
self.__list = []
def push(self, item):
self.__list.append(item)
def pop(self):
return self.__list.pop() //尾部操作时间复杂度O(1)
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())
队列的操作
队列的实现
class Queue(object):
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 == []
def size(self):
return len(self.__list)
if __name__ == "__main__":
s = Queue()
s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
双端队列的操作
双端队列的实现
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 remove_front(self):
return self.__list.pop(0)
def remove_rear(self):
return self.__list.pop()
def is_empty(self):
return self.__list == []
def size(self):
return len(self.__list)
if __name__ == "__main__":
deque = Deque()
deque.add_front(1)
deque.add_front(2)
deque.add_rear(4)
deque.add_rear(3)
print(deque.size())
print(deque.remove_front())
print(deque.remove_rear())