用 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() 。这将获取值
将值插入到数组中 (数组大小) / 2 的位置
定义一个函数 push_from_back() 。这将获取值
在数组末尾插入值
定义一个函数 pop_from_front() 。
如果数组不为空,则删除并返回数组中的第一个元素
定义一个函数 pop_from_middle() 。
删除并返回位置 (数组长度 - 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]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

