zoukankan      html  css  js  c++  java
  • 数据结构 循环队列 回顾练习

    循环链表的入队操作0(1) 出队操作0(1)

    #!/usr/bin/env python3
    
    class QueueUnderflow(ValueError):
            pass
    
    class CQueue(object):
            def __init__(self, init_len=8):
                    self.len = init_len
                    self._elems = [None] * init_len
                    self.head = 0
                    self.num = 0
    
            def is_empty(self):
                    return self.num == 0
    
            def is_full(self):
                    return self.num == self.len
    
            def peek(self):
                    if self.num == 0:
                            raise QueueUnderflow
                    e = self._elems[self.head]
                    return e
    
            def dequeue(self):
                    if self.num == 0:
                            raise QueueUnderflow
                    e = self._elems[self.head]
                    self.head = (self.head + 1) % self.len
                    self.num -= 1
                    return e
    
            def enqueue(self, elem):
                    if self.is_full():
                            self._extends()
                    self._elems[(self.head + self.num) % self.len] = elem
                    self.num += 1
    
            def _extends(self):
                    old_len = self.len
                    self.len = old_len * 2
                    new_elems = [None] * self.len
                    for i in range(old_len):
                            new_elems[i] = self._elems[(self.head + i) % old_len]
                    self._elems, self.head = new_elems, 0
    
            def bianli(self):
                    li = []
                    for i in range(self.num):
                            li.append(self._elems[(self.head+i) % self.len])
                    return li
    
    if __name__ == '__main__':
            cq = CQueue()
            for i in range(12):
                    cq.enqueue(i)
            print(cq.bianli())
            cq.dequeue()
            cq.dequeue()
            print(cq.bianli())
  • 相关阅读:
    VMware workstation 创建共享盘
    VMware vSphere 创建共享盘
    pdksh 包
    oracle virtualbox 添加共享硬盘
    debian 8.2 dynamic add disk
    postgresql 9.1 下的 pg_dump 的初步研究
    postgresql pg_xlog_location_diff 函数
    postgresql 结束进程
    postgresql 加载参数文件
    postgresql 切换xlog日志
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6416543.html
Copyright © 2011-2022 走看看