Opgave 6 (ca. 20%)

Spørgsmål 6.1 (ca. 4%)

public static Queue stackToQueueSame(Stack aStack) {
   Queue tmpQueue = new Queue(aStack.size());
   while (!aStack.empty())
      tmpQueue.enqueue(aStack.pop());
   return tmpQueue;
}

Spørgsmål 6.2 (ca. 6%)

public static Queue stackToQueueReverse(Stack aStack) {
   Stack tmpStack = new Stack(aStack.size());
   while (!aStack.empty())
      tmpStack.push(aStack.pop());
   return stackToQueueSame(tmpStack); 
}

Spørgsmål 6.3 (ca. 10%)

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;
}