/
queue.go
44 lines (36 loc) · 810 Bytes
/
queue.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package core
import "log"
type Queue struct {
maxSize int
front int
rear int
elements []interface{}
}
func NewQueue(max_size int) *Queue {
queue := new(Queue)
queue.front = 0
queue.rear = 0
queue.maxSize = max_size
queue.elements = make([]interface{}, max_size)
return queue
}
func (queue *Queue) Enqueue(element interface{}) {
new_rear := (queue.rear + 1) % queue.maxSize
if new_rear == queue.front {
log.Fatal("Error: Queue is full")
return
}
queue.rear = new_rear
queue.elements[new_rear] = element
}
func (queue *Queue) Dequeue() interface{} {
if queue.front == queue.rear {
//queue is empty
return nil
}
queue.front = (queue.front + 1) % queue.maxSize
return queue.elements[queue.front]
}
func (queue *Queue) IsEmpty() bool {
return queue.front == queue.rear
}