• 基于python实现顺序存储的队列代码 Marathon


    """
        队列-顺序存储
            seqqueue.py
            代码实现
    
    """
    
    # 自定义异常类
    class QueueError(Exception):
        pass
    
    # 队列-顺序存储代码-入队,出队,判断空满
    class SeqQueue:
        def __init__(self):
            # 创建空列表作为存储空间
            self._elems = []
    
        # 入队-加到最后,内存不移动
        def enqueue(self,val):
           self._elems.append(val)
    
        # 出队-头部删除,内存移动
        def dequeue(self):
            # 空队列,报异常
            # if not self._elems: # 如果为空,假假真
            if self._elems == []:
                raise QueueError("queue is empty")
            # 非空队列,pop出第一个元素
            return self._elems.pop(0)
    
        # 判断空满
        def is_empty(self):
            return self._elems == []
    
        # 打印队列
        def print_queue(self):
            # 先判断是否为空
            if self._elems == []:
                raise QueueError("queue is empty")
            else:
                for item in self._elems:
                    print(item,end= " ")
                print()
    
        # 反转队列 或者用顺序栈的进出栈(出队入栈,出栈入队)方法
        def reverse_queue(self):
            """
            算法:1.设置中间列表,遍历n-1次从队列出列,值存入中间列表
                2.遍历n-1次,从中间列表倒着入列
            :return: 反转后的队列
            """
            if  self.is_empty():
                raise QueueError("queue is empty")
            middle_list = []
            len_iterator = len(self._elems)-1
            for i in range(len_iterator):
                middle_list.append(self.dequeue())
            for i in range(len_iterator):
                self.enqueue(middle_list.pop())
    
    print("-"*30)
    if __name__ == "__main__":
        sq = SeqQueue()
        #sq.out_queue()
        # sq.enqueue(1)
        # sq.enqueue(2)
        # sq.enqueue(3)
        # sq.enqueue(4)
        # sq.print_queue()
        # sq.dequeue()
        #sq.print_queue()
        # list01 = []
        # for i in range(2):
        #     list01.append(sq.dequeue())
        # for i in range(2):
        #     sq.enqueue(list01[-i-1])
        sq.reverse_queue()
        sq.print_queue()
  • 相关阅读:
    linux常用命令
    chattr无法删除某个文件
    centos如何卸载软件
    linux命令行下的ftp 多文件下载和目录下载
    yum -y upgrade 和 yum -y update 区别
    Pureftpd
    centos rar安装
    linux系统数据盘挂载教程
    anyexec
    _variant_t
  • 原文地址:https://www.cnblogs.com/davis12/p/13580388.html
Copyright © 2020-2023  润新知