public static Queue stackToQueueSame(Stack aStack) {
Queue tmpQueue = new Queue(aStack.size());
while (!aStack.empty())
tmpQueue.enqueue(aStack.pop());
return tmpQueue;
}
public static Queue stackToQueueReverse(Stack aStack) {
Stack tmpStack = new Stack(aStack.size());
while (!aStack.empty())
tmpStack.push(aStack.pop());
return stackToQueueSame(tmpStack);
}
public static Queue stackToOrderedQueue(Stack aStack) {
Object[] tmpArray = new Object[aStack.size()];
Queue tmpQueue = new Queue(aStack.size());
int index = 0;
while (!aStack.empty()) {
tmpArray[index] = aStack.pop();
for (int i = index; i > 0; i--) {
// Tillempet boblesortering med de mindste elementer først...
if (tmpArray[i].compareTo(tmpArray[i-1]) < 0)
swap(tmpArray, i, i-1);
}
index++;
}
for (int i = 0; i < tmpArray.length; i++)
tmpQueue.enqueue(tmpArray[i]);
return tmpQueue;
}
private static void swap(Object[] data, int i, int j) {
Object tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}