1+ /* Queue
2+ * A Queue is a data structure that allows you to add an element to the end of
3+ * a list and remove the item at the front. A queue follows a "First In First Out"
4+ * system, where the first item to enter the queue is the first to be removed. This
5+ * implementation uses an array to store the queue.
6+ */
7+
8+ //Functions: enqueue, dequeue, peek, view, length
9+
10+ var Queue = function ( ) {
11+
12+ //This is the array representation of the queue
13+ this . queue = [ ] ;
14+
15+ //Add a value to the end of the queue
16+ this . enqueue = function ( item ) {
17+ this . queue [ this . queue . length ] = item ;
18+ }
19+
20+ //Removes the value at the front of the queue
21+ this . dequeue = function ( ) {
22+ if ( this . queue . length === 0 ) {
23+ return "Queue is Empty" ;
24+ }
25+
26+ var result = this . queue [ 0 ] ;
27+ this . queue . splice ( 0 , 1 ) ; //remove the item at position 0 from the array
28+
29+ return result ;
30+ }
31+
32+ //Return the length of the queue
33+ this . length = function ( ) {
34+ return this . queue . length ;
35+ }
36+
37+ //Return the item at the front of the queue
38+ this . peek = function ( ) {
39+ return this . queue [ 0 ] ;
40+ }
41+
42+ //List all the items in the queue
43+ this . view = function ( ) {
44+ console . log ( this . queue ) ;
45+ }
46+ }
47+
48+ //Implementation
49+ var myQueue = new Queue ( ) ;
50+
51+ myQueue . enqueue ( 1 ) ;
52+ myQueue . enqueue ( 5 ) ;
53+ myQueue . enqueue ( 76 ) ;
54+ myQueue . enqueue ( 69 ) ;
55+ myQueue . enqueue ( 32 ) ;
56+ myQueue . enqueue ( 54 ) ;
57+
58+ myQueue . view ( ) ;
59+
60+ console . log ( "Length: " + myQueue . length ( ) ) ;
61+ console . log ( "Front item: " + myQueue . peek ( ) ) ;
62+ console . log ( "Removed " + myQueue . dequeue ( ) + " from front." ) ;
63+ console . log ( "New front item: " + myQueue . peek ( ) ) ;
64+ console . log ( "Removed " + myQueue . dequeue ( ) + " from front." ) ;
65+ console . log ( "New front item: " + myQueue . peek ( ) ) ;
66+ myQueue . enqueue ( 55 ) ;
67+ console . log ( "Inserted 55" ) ;
68+ console . log ( "New front item: " + myQueue . peek ( ) ) ;
69+
70+ for ( var i = 0 ; i < 5 ; i ++ ) {
71+ myQueue . dequeue ( ) ;
72+ myQueue . view ( ) ;
73+ }
74+
75+ console . log ( myQueue . dequeue ( ) ) ;
0 commit comments