python实现循环队列_循环队列Python实现

我已经试着让我的循环队列工作了一段时间,只是想问一个问题,看看能不能得到一些提示。循环队列的问题是,即使队列未满,insert方法也始终返回值False。这是我到目前为止的情况。在class CircularQueue:

def __init__(self, size):

"""

-------------------------------------------------------

Initializes an empty queue. Data is stored in a list.

-------------------------------------------------------

Postconditions:

Initializes an empty queue.

-------------------------------------------------------

"""

assert size>=0, "size must be >=0"

self._values = [None] * size

self._front = 0

self._rear = 0

self._size = size

self.size = 0

return

def __len__(self):

"""

-------------------------------------------------------

Returns the size of the queue.

Use: n = len( q )

-------------------------------------------------------

Postconditions:

Returns the number of values in the queue.

-------------------------------------------------------

"""

return len(self._values())

def is_full(self):

value = self._rear - self._size

if self._values[value]==None:

full = False

else:

full = True

return full

def is_empty(self):

"""

-------------------------------------------------------

Determines if the queue is empty.

Use: b = q.is_empty()

-------------------------------------------------------

Postconditions:

Returns True if the queue is empty, False otherwise.

-------------------------------------------------------

"""

if len(self._values) == 0:

empty = True

else:

empty = False

return empty

def insert(self, value):

"""

-------------------------------------------------------

Inserts a copy of value into the queue.

Use: q.insert( value )

-------------------------------------------------------

Preconditions:

value - a data element (?)

Postconditions:

value is added to the rear of the queue.

-------------------------------------------------------

"""

if self.is_full() == True:

inserted = False

else:

inserted = True

self._values[self._rear] = value

self._rear = (self._rear + 1)% self._size

return inserted

def remove( self ):

"""

-------------------------------------------------------

Removes and returns value from the queue.

Use: v = q.remove()

-------------------------------------------------------

Postconditions:

Returns the value at the front of queue - the value is

removed from queue. Returns None if queue is empty.

-------------------------------------------------------

"""

if self.is_empty() == False:

value = copy.deepcopy(self._values[self._front])

self._front = (self._front + 1) % self._size

else:

value = None

return value

def peek(self):

"""

-------------------------------------------------------

Peeks at the front of queue.

Use: v = q.peek()

-------------------------------------------------------

Postconditions:

Returns a copy of the value at the front of queue -

the value is not removed from queue. Returns None

if queue is empty.

-------------------------------------------------------

"""

if self.is_empty() == True:

value = None

else:

value = copy.deepcopy(self._values[self._front])

return value

def print_i(self):

"""

-------------------------------------------------------

Prints the contents of queue from front to rear.

Use: q.print_i()

-------------------------------------------------------

Postconditions:

Prints each value in queue from front to rear.

Each value starts on a new line.

-------------------------------------------------------

"""

for i in range(len(self._values)):

print(self._values[i])

return

我刚开始尝试测试它,所以这就是我的测试模块的全部。在

^{pr2}$

我在这里所要做的就是看看我的insert方法是否会返回True,因为我知道队列没有满,因为这是我试图输入的第一个值。有什么提示吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值