fix(Go): Update array_queue.go and array_deque.go (#1362)

* 🐞 fix: 队列为空时不应该操作指向

* 🧪 test: 添加pop测试用例

* 🔧 build: 修改testify依赖包

* 🐞 fix: 双向队列为空时,pop不操作指向

* 🔧 build:

Remove third-party packages

* Delete codes/go/go.sum

---------

Co-authored-by: Yudong Jin <krahets@163.com>
This commit is contained in:
nil 2024-05-31 17:38:27 +08:00 committed by GitHub
parent 3f4220de81
commit 0774920d7f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 0 deletions

View file

@ -72,6 +72,9 @@ func (q *arrayDeque) pushLast(num int) {
/* 队首出队 */ /* 队首出队 */
func (q *arrayDeque) popFirst() any { func (q *arrayDeque) popFirst() any {
num := q.peekFirst() num := q.peekFirst()
if num == nil {
return nil
}
// 队首指针向后移动一位 // 队首指针向后移动一位
q.front = q.index(q.front + 1) q.front = q.index(q.front + 1)
q.queSize-- q.queSize--
@ -81,6 +84,9 @@ func (q *arrayDeque) popFirst() any {
/* 队尾出队 */ /* 队尾出队 */
func (q *arrayDeque) popLast() any { func (q *arrayDeque) popLast() any {
num := q.peekLast() num := q.peekLast()
if num == nil {
return nil
}
q.queSize-- q.queSize--
return num return num
} }

View file

@ -49,6 +49,10 @@ func (q *arrayQueue) push(num int) {
/* 出队 */ /* 出队 */
func (q *arrayQueue) pop() any { func (q *arrayQueue) pop() any {
num := q.peek() num := q.peek()
if num == nil {
return nil
}
// 队首指针向后移动一位,若越过尾部,则返回到数组头部 // 队首指针向后移动一位,若越过尾部,则返回到数组头部
q.front = (q.front + 1) % q.queCapacity q.front = (q.front + 1) % q.queCapacity
q.queSize-- q.queSize--

View file

@ -46,9 +46,13 @@ func TestQueue(t *testing.T) {
} }
func TestArrayQueue(t *testing.T) { func TestArrayQueue(t *testing.T) {
// 初始化队列,使用队列的通用接口 // 初始化队列,使用队列的通用接口
capacity := 10 capacity := 10
queue := newArrayQueue(capacity) queue := newArrayQueue(capacity)
if queue.pop() != nil {
t.Errorf("want:%v,got:%v", nil, queue.pop())
}
// 元素入队 // 元素入队
queue.push(1) queue.push(1)