You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
622 B
Go

package utils
type Queue[T any] struct {
data []T
len int
}
// New creates an empty stack
func NewQueue[T any]() Queue[T] {
q := Queue[T]{
[]T{},
0,
}
return q
}
// Push pushes the value v on top of stack s.
func (q *Queue[T]) Enqueue(v T) {
q.data = append(q.data, v)
q.len++
}
func (q *Queue[T]) Dequeue() T {
if !q.HasElement() {
panic("called Dequeue() on an empty queue")
}
value := q.data[0]
var zeroValue T
q.data[0] = zeroValue
q.data = q.data[1:]
q.len--
return value
}
func (q *Queue[T]) HasElement() bool {
return q.len > 0
}
func (q *Queue[T]) GetData() []T {
return q.data
}