在Python中实现可以从前面、中间和尾部推送或弹出的队列的程序
假设我们被要求实现一个可以在前、中、尾部推送和弹出值的队列。
我们必须实现一对函数来推送和弹出所有三种情况。我们必须实现另一个函数,在给定时间显示完整的队列。
因此,如果输入如下:
push_from_back(10)
push_from_back(20)
push_from_front(30)
push_from_middle(40)
push_from_front(50)
show_queue()
pop_from_back()
show_queue()
pop_from_front()
show_queue()
pop_from_middle()
show_queue(),
那么输出将是[50, 30, 40, 10, 20]、[50, 30, 40, 10]、[30, 40, 10]和[30, 10]。
为了解决这个问题,我们将按照以下步骤操作-
- array := 队列的数组表示
-
定义函数 push_from_front()。这将带有值。
- 在位置0插入值
- 定义函数 push_from_middle()。这将带有值。
- 在位置(size of array)/2插入值
- 定义函数 push_from_back()。这将带有值。
- 在数组末尾插入值
- 定义函数 pop_from_front()。
- 如果不为空,则删除并返回数组中的第一个元素。
- 定义函数 pop_from_middle()。
- 删除并返回位置 (length of array – 1) /2 的元素
- 定义函数 pop_from_back()。
- 删除并返回数组的最后一个元素
- 定义函数 show_queue()。它将不带输入。
- 返回数组
示例
让我们看一个下面的实现,以更好地理解。
class Solution():
def __init__(self):
self.array = []
def push_from_front(self, value):
self.array.insert(0, value)
def push_from_middle(self, value):
self.array.insert(len(self.array) // 2, value)
def push_from_back(self, value):
self.array.append(value)
def pop_from_front(self):
return (self.array or [-1]).pop(0)
def pop_from_middle(self):
return (self.array or [-1]).pop((len(self.array) - 1) // 2)
def pop_from_back(self):
return (self.array or [-1]).pop()
def show_queue(self):
return self.array
ob = Solution()
ob.push_from_back(10)
ob.push_from_back(20)
ob.push_from_front(30)
ob.push_from_middle(40)
ob.push_from_front(50)
print(ob.show_queue())
ob.pop_from_back()
print(ob.show_queue())
ob.pop_from_front()
print(ob.show_queue())
ob.pop_from_middle()
print(ob.show_queue())
输入
ob = Solution()
ob.push_from_back(10)
ob.push_from_back(20)
ob.push_from_front(30)
ob.push_from_middle(40)
ob.push_from_front(50)
print(ob.show_queue())
ob.pop_from_back()
print(ob.show_queue())
ob.pop_from_front()
print(ob.show_queue())
ob.pop_from_middle()
print(ob.show_queue())
输出
[50, 30, 40, 10, 20]
[50, 30, 40, 10]
[30, 40, 10]
[30, 10]