Python 实现一个可以在队首、队中和队尾进行 push 和 pop 操作的队列程序
假设,我们被要求实现一个可以在队首、队中和队尾进行 push 和 pop 操作的队列。
我们需要为这三种情况分别实现一对 push 和 pop 函数。还需要实现另一个函数,用于在给定时间显示完整的队列。
所以,如果输入如下:
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]
广告