mirror of
https://github.com/krahets/hello-algo.git
synced 2025-12-19 07:17:54 +08:00
refactor: Replace poll with pop in Queue and Deque (#415)
This commit is contained in:
@@ -68,7 +68,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
func pollFirst() -> Int {
|
||||
func popFirst() -> Int {
|
||||
let num = peekFirst()
|
||||
// 队首指针向后移动一位
|
||||
front = index(i: front + 1)
|
||||
@@ -77,7 +77,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
func pollLast() -> Int {
|
||||
func popLast() -> Int {
|
||||
let num = peekLast()
|
||||
queSize -= 1
|
||||
return num
|
||||
@@ -136,10 +136,10 @@ enum _ArrayDeque {
|
||||
print("元素 1 队首入队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 元素出队 */
|
||||
let pollLast = deque.pollLast()
|
||||
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let pollFirst = deque.pollFirst()
|
||||
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())")
|
||||
let popLast = deque.popLast()
|
||||
print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let popFirst = deque.popFirst()
|
||||
print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.size()
|
||||
|
||||
@@ -46,7 +46,7 @@ class ArrayQueue {
|
||||
|
||||
/* 出队 */
|
||||
@discardableResult
|
||||
func poll() -> Int {
|
||||
func pop() -> Int {
|
||||
let num = peek()
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
front = (front + 1) % capacity()
|
||||
@@ -94,8 +94,8 @@ enum _ArrayQueue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
let poll = queue.poll()
|
||||
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())")
|
||||
let pop = queue.pop()
|
||||
print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.size()
|
||||
@@ -108,7 +108,7 @@ enum _ArrayQueue {
|
||||
/* 测试环形数组 */
|
||||
for i in 0 ..< 10 {
|
||||
queue.push(num: i)
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
print("第 \(i) 轮入队 + 出队后 queue = \(queue.toArray())")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,11 +27,11 @@ enum Deque {
|
||||
print("队尾元素 peekLast = \(peekLast)")
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 pollFirst 的复杂度为 O(n)
|
||||
let pollFirst = deque.removeFirst()
|
||||
print("队首出队元素 pollFirst = \(pollFirst),队首出队后 deque = \(deque)")
|
||||
let pollLast = deque.removeLast()
|
||||
print("队尾出队元素 pollLast = \(pollLast),队尾出队后 deque = \(deque)")
|
||||
// 使用 Array 模拟时 popFirst 的复杂度为 O(n)
|
||||
let popFirst = deque.removeFirst()
|
||||
print("队首出队元素 popFirst = \(popFirst),队首出队后 deque = \(deque)")
|
||||
let popLast = deque.removeLast()
|
||||
print("队尾出队元素 popLast = \(popLast),队尾出队后 deque = \(deque)")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.count
|
||||
|
||||
@@ -71,7 +71,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 出队操作 */
|
||||
private func poll(isFront: Bool) -> Int {
|
||||
private func pop(isFront: Bool) -> Int {
|
||||
if isEmpty() {
|
||||
fatalError("双向队列为空")
|
||||
}
|
||||
@@ -103,13 +103,13 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
func pollFirst() -> Int {
|
||||
poll(isFront: true)
|
||||
func popFirst() -> Int {
|
||||
pop(isFront: true)
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
func pollLast() -> Int {
|
||||
poll(isFront: false)
|
||||
func popLast() -> Int {
|
||||
pop(isFront: false)
|
||||
}
|
||||
|
||||
/* 访问队首元素 */
|
||||
@@ -158,10 +158,10 @@ enum _LinkedListDeque {
|
||||
print("元素 1 队首入队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 元素出队 */
|
||||
let pollLast = deque.pollLast()
|
||||
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let pollFirst = deque.pollFirst()
|
||||
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())")
|
||||
let popLast = deque.popLast()
|
||||
print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let popFirst = deque.popFirst()
|
||||
print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.size()
|
||||
|
||||
@@ -43,7 +43,7 @@ class LinkedListQueue {
|
||||
|
||||
/* 出队 */
|
||||
@discardableResult
|
||||
func poll() -> Int {
|
||||
func pop() -> Int {
|
||||
let num = peek()
|
||||
// 删除头结点
|
||||
front = front?.next
|
||||
@@ -91,8 +91,8 @@ enum _LinkedListQueue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
let poll = queue.poll()
|
||||
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())")
|
||||
let pop = queue.pop()
|
||||
print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.size()
|
||||
|
||||
@@ -25,9 +25,9 @@ enum Queue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 poll 的复杂度为 O(n)
|
||||
// 使用 Array 模拟时 pop 的复杂度为 O(n)
|
||||
let pool = queue.removeFirst()
|
||||
print("出队元素 poll = \(pool),出队后 queue = \(queue)")
|
||||
print("出队元素 pop = \(pool),出队后 queue = \(queue)")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.count
|
||||
|
||||
Reference in New Issue
Block a user