• 栈和队列


    栈与队列

    栈和队列都是线性表。

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

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

  • 相关阅读:
    Java语言----三种循环语句的区别
    选择结构if语句和switch语句的区别
    java中实现多态的机制是什么?
    SpringMVC的运行原理
    Struts1运行原理以及整合步骤
    我回来啦!
    Struts2的运行原理和运行与原理
    初步认识 Web Service
    spring Aop 注解
    mina2.0 spring
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096612.html
Copyright © 2020-2023  润新知