From 0774920d7f16f2c960e2eac762e6470fd529ea15 Mon Sep 17 00:00:00 2001 From: nil <1526783667@qq.com> Date: Fri, 31 May 2024 17:38:27 +0800 Subject: [PATCH] fix(Go): Update array_queue.go and array_deque.go (#1362) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🐞 fix: 队列为空时不应该操作指向 * 🧪 test: 添加pop测试用例 * 🔧 build: 修改testify依赖包 * 🐞 fix: 双向队列为空时,pop不操作指向 * 🔧 build: Remove third-party packages * Delete codes/go/go.sum --------- Co-authored-by: Yudong Jin --- codes/go/chapter_stack_and_queue/array_deque.go | 6 ++++++ codes/go/chapter_stack_and_queue/array_queue.go | 4 ++++ codes/go/chapter_stack_and_queue/queue_test.go | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/codes/go/chapter_stack_and_queue/array_deque.go b/codes/go/chapter_stack_and_queue/array_deque.go index 85d98aca5..37b436f2b 100644 --- a/codes/go/chapter_stack_and_queue/array_deque.go +++ b/codes/go/chapter_stack_and_queue/array_deque.go @@ -72,6 +72,9 @@ func (q *arrayDeque) pushLast(num int) { /* 队首出队 */ func (q *arrayDeque) popFirst() any { num := q.peekFirst() + if num == nil { + return nil + } // 队首指针向后移动一位 q.front = q.index(q.front + 1) q.queSize-- @@ -81,6 +84,9 @@ func (q *arrayDeque) popFirst() any { /* 队尾出队 */ func (q *arrayDeque) popLast() any { num := q.peekLast() + if num == nil { + return nil + } q.queSize-- return num } diff --git a/codes/go/chapter_stack_and_queue/array_queue.go b/codes/go/chapter_stack_and_queue/array_queue.go index 9068996a1..d8723e8e3 100644 --- a/codes/go/chapter_stack_and_queue/array_queue.go +++ b/codes/go/chapter_stack_and_queue/array_queue.go @@ -49,6 +49,10 @@ func (q *arrayQueue) push(num int) { /* 出队 */ func (q *arrayQueue) pop() any { num := q.peek() + if num == nil { + return nil + } + // 队首指针向后移动一位,若越过尾部,则返回到数组头部 q.front = (q.front + 1) % q.queCapacity q.queSize-- diff --git a/codes/go/chapter_stack_and_queue/queue_test.go b/codes/go/chapter_stack_and_queue/queue_test.go index cf46cd17b..c25f0f12d 100644 --- a/codes/go/chapter_stack_and_queue/queue_test.go +++ b/codes/go/chapter_stack_and_queue/queue_test.go @@ -46,9 +46,13 @@ func TestQueue(t *testing.T) { } func TestArrayQueue(t *testing.T) { + // 初始化队列,使用队列的通用接口 capacity := 10 queue := newArrayQueue(capacity) + if queue.pop() != nil { + t.Errorf("want:%v,got:%v", nil, queue.pop()) + } // 元素入队 queue.push(1)