Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 42998ac

Browse files
committed
Added Queue Data Structure
1 parent cedbe13 commit 42998ac

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

‎Data Structures/Queue/Queue.js‎

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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 keeps track of where the end of the queue is
13+
this.back = 0;
14+
//This is the array representation of the queue
15+
this.queue = {};
16+
17+
//Add a value to the end of the queue
18+
this.enqueue = function(item) {
19+
this.queue[this.back] = item;
20+
this.back++;
21+
}
22+
23+
//Removes the value at the front of the queue
24+
this.dequeue = function() {
25+
if (this.back === 0) {
26+
return "Queue is Empty";
27+
}
28+
29+
var result = this.queue[this.front];
30+
delete this.queue[this.front];
31+
32+
//Shift all the other items forward
33+
for (var i = 1; i < this.back; i++) {
34+
this.queue[i - 1] = this.queue[i];
35+
}
36+
37+
//clean up the leftover duplicated value at the back of the queue
38+
delete this.queue[this.back];
39+
this.back--;
40+
41+
return result;
42+
}
43+
44+
//Return the length of the queue
45+
this.length = function() {
46+
return this.back;
47+
}
48+
49+
//Return the item at the front of the queue
50+
this.peek = function() {
51+
return this.queue[0];
52+
}
53+
54+
//List all the items in the queue
55+
this.view = function() {
56+
var str = "{"
57+
//construct a single string to represent the items in the queue
58+
for (var i = 0; i < this.back; i++) {
59+
str += this.queue[i];
60+
if (i !== this.back - 1) {
61+
str += ", ";
62+
}
63+
}
64+
str += "}";
65+
66+
console.log(str);
67+
}
68+
}
69+
70+
//Implementation
71+
var myQueue = new Queue();
72+
73+
myQueue.enqueue(1);
74+
myQueue.enqueue(5);
75+
myQueue.enqueue(76);
76+
myQueue.enqueue(69);
77+
myQueue.enqueue(32);
78+
myQueue.enqueue(54);
79+
80+
myQueue.view();
81+
82+
console.log("Length: " + myQueue.length());
83+
console.log("Front item: " + myQueue.peek());
84+
console.log("Removed " + myQueue.dequeue() + " from front.");
85+
console.log("New front item: " + myQueue.peek());
86+
console.log("Removed " + myQueue.dequeue() + " from front.");
87+
console.log("New front item: " + myQueue.peek());
88+
myQueue.enqueue(55);
89+
console.log("Inserted 55");
90+
console.log("New front item: " + myQueue.peek());
91+
92+
for (var i = 0; i < 5; i++) {
93+
myQueue.dequeue();
94+
myQueue.view();
95+
}
96+
97+
console.log(myQueue.dequeue());

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /