Queue Practice
by Steven Senkus
JavaScript
function Queue() {
this.dataStore = [];
}
Queue.prototype.enqueue = function (element) {
this.dataStore.push(element);
};
Queue.prototype.dequeue = function () {
return this.dataStore.shift();
};
Queue.prototype.front = function () {
return this.dataStore[0];
};
Queue.prototype.back = function () {
return this.dataStore[this.dataStore.length - 1]
};
Queue.prototype.toString = function () {
var returnString = '';
for (var i = 0; i < this.dataStore.length; i++) {
returnString += this.dataStore[i];
}
return returnString;
};
Queue.prototype.empty = function () {
return this.dataStore.length === 0;
};
/*
var men = new Queue();
men.enqueue('Albert');
men.enqueue('Bob');
men.enqueue('Charles');
var women = new Queue();
women.enqueue('Jackie');
women.enqueue('Kelly');
women.enqueue('Lisa');
women.enqueue('Megan');
while (!men.empty() && !women.empty()) {
console.log(men.dequeue(), women.dequeue());
} */
function distribute(nums, queues, n, digit) {
for (var i = 0; i < n; ++i) {
if (digit == 1) {
queues[nums[i] % 10].enqueue(nums[i]);
} else {
queues[Math.floor(nums[i] / 10)].enqueue(nums[i]);
}
}
}
function collect(queues, nums) {
var i = 0;
for (var digit = 0; digit < 10; ++digit) {
while (!queues[digit].empty()) {
nums[i++] = queues[digit].dequeue();
}
}
}
function displayArray(arr) {
var output = ''
for (var i = 0; i < arr.length; ++i) {
output += (arr[i] + ' ');
}
console.log(output);
}
// main program
var queues = [];
for (var i = 0; i < 10; ++i) {
queues[i] = new Queue();
}
var nums = [];
for (var i = 0; i < 10; ++i) {
nums[i] = Math.floor(Math.floor(Math.random() * 101));
}
print("Before radix sort: ");
displayArray(nums);
distribute(nums, queues, 10, 1);
collect(queues, nums);
distribute(nums, queues, 10, 10);
collect(queues, nums);
displayArray(nums)