Skip to content

Commit

Permalink
collections queue added
Browse files Browse the repository at this point in the history
  • Loading branch information
0xAX committed Aug 11, 2014
1 parent bcca7df commit 466ab31
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ alghoritms
* doubly linked list
* binary tree
* stack
* queue

contribution
------------
Expand Down
33 changes: 33 additions & 0 deletions collections/queue/queue.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package queue

type Queue struct {
queue []interface{}
len int
}

func New() *Queue {
queue := &Queue{}
queue.queue = make([]interface{}, 0)
queue.len = 0
return queue
}

func (queue *Queue) Length() int {
return queue.len
}

func (q *Queue) Remove() interface{} {
tmp := q.queue[0]
q.queue = q.queue[1:]
q.len -= 1
return tmp
}

func (q *Queue) Peek() interface{} {
return q.queue[0]
}

func (q *Queue) Add(value interface{}) {
q.len += 1
q.queue = append(q.queue, value)
}
29 changes: 29 additions & 0 deletions collections/queue/queue_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package queue

import "testing"

func Test_Queue(t *testing.T) {
queue := New()

queue.Add(1)
queue.Add(2)
queue.Add(3)

if queue.Length() != 3 {
t.Error("[Error] queue length is wrong")
}

element := queue.Remove()

if element != 1 {
t.Error("[Error] remove is wrong")
}

if queue.Length() != 2 {
t.Error("[Error] queue length is wrong after pop")
}

if queue.Peek() != 2 {
t.Error("[Error] queue Peek is wrong")
}
}

0 comments on commit 466ab31

Please sign in to comment.