zoukankan      html  css  js  c++  java
  • 数据结构 顺序表实现队列 回顾练习

    顺序表队列 入队0(n) 出队0(1)

    列表的下端为出口

    这里需要注意的是 self._elems = [None] * init_len

    不然后面的程序会出现 IndexError 

     1 #!/usr/bin/env python3
     2 
     3 class QueueUnderflow(ValueError):
     4         pass
     5 
     6 class Simple_SQueue(object):
     7         def __init__(self, init_len=8):
     8                 self.len = init_len
     9                 self._elems = [None] * init_len
    10                 self.num = 0
    11 
    12         def is_empty(self):
    13                 return self._elems == []
    14 
    15         def count(self):
    16                 return self.num
    17 
    18         def is_full(self):
    19                 return self.num == self.len
    20 
    21         def dequeue(self):
    22                 if self.num == 0:
    23                         raise QueueUnderflow
    24                 e = self._elems[self.num-1]
    25                 self.num -= 1
    26                 return e
    27 
    28         def peek(self):
    29                 if self.num == 0:
    30                         raise QueueUnderflow
    31                 e = self._elems[self.num-1]
    32                 return e
    33 
    34         def enqueue(self, elem):
    35                 if self.is_full():
    36                         self._extends(init_len)
    37                 if self.num == 0:
    38                         self._elems[0] = elem
    39                         self.num += 1
    40                         return
    41                 for i in range(self.num,0,-1):
    42                         self._elems[i] = self._elems[i-1]
    43                 self._elems[0] = elem
    44                 self.num += 1
    45 
    46         def _extends(self):
    47                 pass
    48 
    49         def bianli(self):
    50                 li = []
    51                 for i in range(self.num-1,-1,-1):
    52                         li.append(self._elems[i])
    53                 return li
    54 
    55 if __name__ == '__main__':
    56         sq = Simple_SQueue()
    57         for i in [1,2,3,4,5]:
    58             sq.enqueue(i)
    59         print(sq.bianli())
    60         sq.dequeue()
    61         sq.dequeue()
    62         print(sq.bianli())
  • 相关阅读:
    剑指offer:二进制中1的个数
    剑指offer:反转链表
    剑指offer:链表中倒数第k个结点
    剑指offer:调整数组顺序使奇数位于偶数前面
    剑指offer:矩形覆盖
    剑指offer:变态跳台阶
    剑指offer :跳台阶
    剑指offer:旋转数组的最小数字
    剑指offer:用两个栈实现队列
    剑指offer:重建二叉树
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6416483.html
Copyright © 2011-2022 走看看