如何向后移动一个位置,使我的新元素不在前一个元素的顶部



如何向后移动一个位置,使我的新元素不在前一个元素的顶部?这是一个队列。这是构造函数:

def _init_(self, capacity=8):
self.__data = [None] * capacity
self.__front = 0
self.__size = 0

这是有问题的功能:

def insert_p_clients(self, client):
if self.is_full():
raise ValueError('A fila está cheia! Tente mais tarde!')
self._data[self._front] = client
self._front = (self.front + 1) % len(self._data)
self.__size += 1

在给定的代码中,有许多缺少下划线,从__init__()方法开始。以下版本的insert_p_clients()应该可以工作:

def insert_p_clients(self, client):
if self.is_full():
raise ValueError('A fila está cheia! Tente mais tarde!')
self.__data[self.__front] = client
self.__front = (self.__front+1) % len(self.__data) 
self.__size += 1

我已经用大量的脚手架进行了测试,一切似乎都很有效。

class Queue:
def __init__(self, capacity=8):
self.__data = [None] * capacity
self.__front = 0
self.__rear = 0
self.__size = 0
def is_full(self):
return self.__size >= len(self.__data)
def is_empty(self):
return self.__size <= 0
def __len__(self):
return self.__size
def capacity(self):
return len(self.__data)
def insert_p_clients(self, client):
if self.is_full():
raise ValueError('A fila está cheia! Tente mais tarde!')
self.__data[self.__front] = client
self.__front = (self.__front+1) % len(self.__data) 
self.__size += 1

def remove_p_client(self):
if self.is_empty():
raise ValueError('A fila está vazia!')
self.__data[self.__rear] = None
self.__rear = (self.__rear + 1) % len(self.__data)
self.__size -= 1


def get_queue_front(self):
return self.__data[self.__front-1]

def __repr__(self):
if self.__size == 0:
return str([])
result = list()
index = self.__rear
while ((index % len(self.__data)) != self.__front):
result.append(self.__data[(index % len(self.__data))])
index += 1
return str(result)


def __str__(self):
return str(self.__data)

if __name__ == "__main__":
q = Queue(4)
print(q)
print(repr(q))
try:
q.remove_p_client()
except:
print("Queue is empty.")
try:
q.insert_p_clients(13)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.insert_p_clients(17)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.remove_p_client()
except:
print("Queue is empty.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.insert_p_clients(23)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.insert_p_clients(42)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.insert_p_clients(57)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.insert_p_clients(69)
except:
print("Queue is full.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))
try:
q.remove_p_client()
except:
print("Queue is empty.")
print(q.get_queue_front())
print(q)
print(repr(q))
print(len(q))

相关内容

最新更新