zoukankan      html  css  js  c++  java
  • 栈和队列

    栈与队列

    栈和队列都是线性表。

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

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

  • 相关阅读:
    OLAP、OLTP的介绍和比较
    Python发行版本Anaconda的安装说明:基于Anaconda2-4.3.1-Windows-x86_64
    Hive学习:Hive连接JOIN用例详解
    Linux学习一:图解CentOS 6.5安装步骤
    Linux学习二:基于CentOS 6.5的网络配置
    一个恒等式.jpg
    centos 7 The path "" is not a valid path to the 3.10.0-229.el7.x86_64 kernel headers. Would you like to change it?
    Redis从入门到精通
    solr服务的搭建
    SpringMvc的运行流程
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096612.html
Copyright © 2011-2022 走看看