首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

TAoCP 2.2.2 - 2.2.3 Queue (行列)

2012-11-07 
TAoCP 2.2.2 - 2.2.3 Queue (队列)Queue (队列),俗称FIFO结构,主要操作有两个,enqueue(入队)和dequeue(出

TAoCP 2.2.2 - 2.2.3 Queue (队列)

Queue (队列),俗称FIFO结构,主要操作有两个,enqueue(入队)和dequeue(出队),数组实现还有一个succ(回绕)操作。

?

图里只画了链表结构的enqueue和dequeue,还有线性结构的succ。

?

代码只做了线性结构的,其他自己补完吧。

?

:)

?


TAoCP 2.2.2 - 2.2.3 Queue (行列)

?

?

#! /usr/bin/env python3# coding:utf-8class QueueException(Exception): passclass QueueOverFlow(QueueException): passclass QueueUnderFlow(QueueException): passclass Queue:       def __init__(self, max_size):        self.max_size = max_size        self.data = [None] * max_size        self.size = 0        self.front = 0        self.rear = 0    def is_empty(self):        return self.size == 0    def is_full(self):        return self.size == self.max_size    def succ(self, current_index):        return (current_index + 1) % self.max_size    def enqueue(self, data):        if self.is_full():            raise QueueOverFlow        self.data[self.rear] = data        self.rear = self.succ(self.rear)        self.size += 1    def dequeue(self):        if self.is_empty():            raise QueueUnderFlow        data = self.data[self.front]        self.front = self.succ(self.front)        self.size -= 1        return data

热点排行