mirror of
https://github.com/duke-git/lancet.git
synced 2025-10-18 13:30:51 +08:00
refactor: Change param __TEXT __DATA __OBJC others dec hex to in NewCircularQueue function
This commit is contained in:
@@ -7,18 +7,18 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// CircularQueue implements circular queue with slice,
|
// CircularQueue implements circular queue with slice,
|
||||||
// last index of CircularQueue don't contain value, so acturl capacity is size - 1
|
// last index of CircularQueue don't contain value, so acturl capacity is capacity - 1
|
||||||
type CircularQueue[T any] struct {
|
type CircularQueue[T any] struct {
|
||||||
data []T
|
data []T
|
||||||
front int
|
front int
|
||||||
rear int
|
rear int
|
||||||
size int
|
capacity int
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCircularQueue return a empty CircularQueue pointer
|
// NewCircularQueue return a empty CircularQueue pointer
|
||||||
func NewCircularQueue[T any](size int) *CircularQueue[T] {
|
func NewCircularQueue[T any](capacity int) *CircularQueue[T] {
|
||||||
data := make([]T, size)
|
data := make([]T, capacity)
|
||||||
return &CircularQueue[T]{data: data, front: 0, rear: 0, size: size}
|
return &CircularQueue[T]{data: data, front: 0, rear: 0, capacity: capacity}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Data return slice of queue data
|
// Data return slice of queue data
|
||||||
@@ -39,10 +39,10 @@ func (q *CircularQueue[T]) Data() []T {
|
|||||||
|
|
||||||
// Length return current data length of queue
|
// Length return current data length of queue
|
||||||
func (q *CircularQueue[T]) Length() int {
|
func (q *CircularQueue[T]) Length() int {
|
||||||
if q.size == 0 {
|
if q.capacity == 0 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return (q.rear - q.front + q.size) % q.size
|
return (q.rear - q.front + q.capacity) % q.capacity
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsEmpty checks if queue is empty or not
|
// IsEmpty checks if queue is empty or not
|
||||||
@@ -52,7 +52,7 @@ func (q *CircularQueue[T]) IsEmpty() bool {
|
|||||||
|
|
||||||
// IsFull checks if queue is full or not
|
// IsFull checks if queue is full or not
|
||||||
func (q *CircularQueue[T]) IsFull() bool {
|
func (q *CircularQueue[T]) IsFull() bool {
|
||||||
return (q.rear+1)%q.size == q.front
|
return (q.rear+1)%q.capacity == q.front
|
||||||
}
|
}
|
||||||
|
|
||||||
// Front return front value of queue
|
// Front return front value of queue
|
||||||
@@ -65,7 +65,7 @@ func (q *CircularQueue[T]) Back() T {
|
|||||||
if q.rear-1 >= 0 {
|
if q.rear-1 >= 0 {
|
||||||
return q.data[q.rear-1]
|
return q.data[q.rear-1]
|
||||||
}
|
}
|
||||||
return q.data[q.size-1]
|
return q.data[q.capacity-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enqueue put element into queue
|
// Enqueue put element into queue
|
||||||
@@ -75,7 +75,7 @@ func (q *CircularQueue[T]) Enqueue(value T) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
q.data[q.rear] = value
|
q.data[q.rear] = value
|
||||||
q.rear = (q.rear + 1) % q.size
|
q.rear = (q.rear + 1) % q.capacity
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -89,7 +89,7 @@ func (q *CircularQueue[T]) Dequeue() (*T, error) {
|
|||||||
headItem := q.data[q.front]
|
headItem := q.data[q.front]
|
||||||
var t T
|
var t T
|
||||||
q.data[q.front] = t
|
q.data[q.front] = t
|
||||||
q.front = (q.front + 1) % q.size
|
q.front = (q.front + 1) % q.capacity
|
||||||
|
|
||||||
return &headItem, nil
|
return &headItem, nil
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,7 @@ func (q *CircularQueue[T]) Clear() {
|
|||||||
q.data = []T{}
|
q.data = []T{}
|
||||||
q.front = 0
|
q.front = 0
|
||||||
q.rear = 0
|
q.rear = 0
|
||||||
q.size = 0
|
q.capacity = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contain checks if the value is in queue or not
|
// Contain checks if the value is in queue or not
|
||||||
|
@@ -17,7 +17,7 @@ func TestCircularQueue_Enqueue(t *testing.T) {
|
|||||||
queue.Enqueue(5)
|
queue.Enqueue(5)
|
||||||
|
|
||||||
queue.Print()
|
queue.Print()
|
||||||
// assert.Equal([]int{1, 2, 3, 4, 5}, queue.Data())
|
assert.Equal([]int{1, 2, 3, 4, 5}, queue.Data())
|
||||||
assert.Equal(5, queue.Length())
|
assert.Equal(5, queue.Length())
|
||||||
|
|
||||||
err := queue.Enqueue(6)
|
err := queue.Enqueue(6)
|
||||||
|
Reference in New Issue
Block a user