/
12queue.go
66 lines (56 loc) · 1.17 KB
/
12queue.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import "fmt"
type A12Queue struct {
Array []ballnum
// Name string
End int
}
func (q *A12Queue) ValString() string {
retStr := "["
for i := 0; i < len(q.Array); i++ {
retStr += fmt.Sprintf("%d, ", int(q.Array[i]))
}
return retStr + "]"
}
func (q A12Queue) String() string {
return fmt.Sprintf(`{
"array":
%#v,
"End": %d,
"Size": %d
}`, q.ValString(), q.End, q.End)
}
func New12Queue(arr []ballnum, name string) *A12Queue {
return &A12Queue{
Array: arr,
End: 0,
// Name: name,
}
}
func (q *A12Queue) Append(i ballnum) {
q.Array[q.End] = i
q.End++
}
func (q *A12Queue) Empty2(destQueue *ABallQueue) (retVal ballnum) {
retVal = q.Array[0]
end := destQueue.Start + destQueue.Size
for i := sizenum(1); i < 12; i++ {
destQueue.Array[end+i] = q.Array[i]
}
destQueue.Size += 11
q.End = 11
return
}
func (q *A12Queue) Empty(destQueue *ABallQueue) (retVal ballnum) {
retVal = q.Array[len(q.Array)-1]
end := destQueue.Start + destQueue.Size
for i := int(10); i != -1; i, end = i-1, end+1 {
destQueue.Array[end] = q.Array[i]
}
destQueue.Size += 11
q.End = 0
return
}
func (q *A12Queue) IsFull() bool {
return q.End == len(q.Array)
}