栈与队列
栈和队列都是线性表。
栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫作栈顶。
对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者相当于删除最后一个元素。栈有时又叫作LIFO(Last In First Out)表,即后进先出。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
栈的实现:
栈可以使用顺序表实现,也可以使用链表来实现
这里使用顺序表来实现
#栈的实现
class Stack(Object):
def __init__(self):
self.__list = []
def push (self, 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(2)
s.push(3)
s.pop()
#队列的实现
class Queue(object):
def __init__(self):
self.__list = []
def enqueue (self, item):
self.__list.append(item)
def dequeue(self):
return self.pop(0)
def is_empty(self):
return self.__list == []
def size(self):
return len(self.__list)
if __name__ == “__main__”:
s = Queue()
s.enqueue(2)
s.dequeue()
#双端队列
class DouQueue(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.pop(0)
def pop_front(self):
return self.pop()
def is_empty(self):
return self.__list == []
def size(self):
return len(self.__list)
if __name__ == “__main__”:
s = DouQueue()