golanglabs

Log | Files | Refs | README | LICENSE

queue.go (530B)


      1 package dsa
      2 
      3 type Queue struct {
      4 	items []interface{}
      5 }
      6 
      7 func (q *Queue) Enqueue(item interface{}) {
      8 	q.items = append(q.items, item)
      9 }
     10 
     11 func (q *Queue) EnqueueSlice(items []interface{}) {
     12 	for _, item := range items {
     13 		q.Enqueue(item)
     14 	}
     15 }
     16 
     17 func (q *Queue) Dequeue() (item interface{}, flag bool) {
     18 	if q.IsEmpty() {
     19 		return nil, false
     20 	} else {
     21 		head := q.items[0]
     22 		q.items = q.items[1:]
     23 		return head, true
     24 	}
     25 }
     26 
     27 func (q *Queue) IsEmpty() bool {
     28 	return q.Size() == 0
     29 }
     30 
     31 func (q *Queue) Size() int {
     32 	return len(q.items)
     33 }