栈和队列

栈与队列

栈和队列都是线性表。

栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫作栈顶。

对栈的基本操作有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()

原文地址:https://www.cnblogs.com/yongfuxue/p/10096612.html