用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]
示例
让我们看下面的实现来更好地理解
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、值) 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]