Page 1 Queue using an array
Page 2 .head .tail
Pointers head and tail always point to the first empty slot before or afterelements in the list. Thus, initially they point to the same slot, say 0.
Page 3 .head.tail
Add object to rear of list1
Page 4 .head.tail
Add object to rear of list1 2
Page 5 .head.tail
Add object to rear of list1 2 3
Page 6 .head.tail
Add object to rear of list1 2 3 4
Page 7 .head .tail
Remove from front
1
2 3 4
.object
Page 8 .head .tail
Remove from front
2
3 4
.object
Page 9 .head .tail
Add3 4 5
Page 10 .head .tail
Remove4 5
3
.object
Page 11 .head .tail
Add4 5 6
Page 12 .head .tail
Add4 5 6 7
Page 13 .head.tail
Add4 5 6 7 8
Page 14 .tail .head
Add4 5 6 7 89
Page 15 Queue using Circularly Linked List
Page 16 .tail
Circularly linked list
Page 17 .tail
Queue: insert item at rear, remove at front
Page 18 .tail
Queue: remove from front
_object = tail->next->item;
_object
Page 19 .tail
Queue: remove from front
_temp = tail->next;
_object
Temp
_temp
Page 20 .tail
Queue: remove from front
_tail->next = tail->next->next;
_object
Temp
_temp
Page 21 .tail
Queue: remove from front
_delete temp;
_object
Temp
_temp
Page 22 .tail
Queue: remove from front
_return object;
_object
Temp
Page 23 .tail
Queue: remove from front
_
Temp
Page 24 .tail
Queue: insert at rear
_
Temp
Page 25 .tail
Queue: insert at rear
_cell = new Cell(object);
Temp
_cell
NULL
Page 26 .tail
Queue: insert at rear
_cell->next = tail->next;
Temp
_cell
Page 27 .tail
Queue: insert at rear
_tail->next = cell;
Temp
_cell
Page 28 .tail
Queue: insert at rear
_tail = tail->next;
Temp
_cell