Filip_Markoski

[ADSx] - QStack & SQueue

Jan 8th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.98 KB | None | 0 0
  1. import java.util.ArrayDeque;
  2. import java.util.Queue;
  3. import java.util.Stack;
  4. import java.util.stream.IntStream;
  5.  
  6. class MyQueue<T> {
  7.     /**
  8.      * Queue made using a Two Stacks
  9.      */
  10.     Stack<T> stackOne;
  11.     Stack<T> stackTwo;
  12.  
  13.     public MyQueue() {
  14.         this.stackOne = new Stack<>();
  15.         this.stackTwo = new Stack<>();
  16.     }
  17.  
  18.     public boolean isEmpty() {
  19.         return stackOne.isEmpty() && stackTwo.isEmpty();
  20.     }
  21.  
  22.     public void enqueue(T element) {
  23.         stackOne.push(element);
  24.     }
  25.  
  26.     public T dequeue() {
  27.         /* Initial Scenario */
  28.         if (this.isEmpty()) {
  29.             System.out.println("No elements");
  30.             return null;
  31.         }
  32.         /* Running Scenario */
  33.         if (stackTwo.isEmpty()) {
  34.             while (!stackOne.isEmpty()) {
  35.                 T pop = stackOne.pop();
  36.                 stackTwo.push(pop);
  37.             }
  38.         }
  39.         T pop = stackTwo.pop();
  40.         return pop;
  41.     }
  42.  
  43.     public T peek() {
  44.         /* Initial Scenario */
  45.         if (this.isEmpty()) {
  46.             System.out.println("No elements");
  47.             return null;
  48.         }
  49.         /* Running Scenario */
  50.         return stackTwo.peek();
  51.     }
  52.  
  53.     @Override
  54.     public String toString() {
  55.         return stackOne.toString() + " " + stackTwo.toString();
  56.     }
  57. }
  58.  
  59. class MyStack<T> {
  60.     /**
  61.      * Stack made using a Queue
  62.      */
  63.     Queue<T> queue;
  64.  
  65.     public MyStack() {
  66.         this.queue = new java.util.LinkedList<>();
  67.     }
  68.  
  69.     boolean isEmpty() {
  70.         return queue.isEmpty();
  71.     }
  72.  
  73.     void push(T element) {
  74.         /* Initial Scenario */
  75.         if (this.isEmpty()) {
  76.             queue.add(element);
  77.         }
  78.         /* Running Scenario */
  79.         else {
  80.             queue.add(element);
  81.  
  82.             int sizeQueue = queue.size();
  83.             for (int i = 0; i < sizeQueue - 1; i++) {
  84.                 T poll = queue.poll();
  85.                 queue.add(poll);
  86.             }
  87.         }
  88.     }
  89.  
  90.     T pop() {
  91.         /* Initial Scenario */
  92.         if (this.isEmpty()) {
  93.             System.out.println("No elements");
  94.             return null;
  95.         }
  96.         /* Running Scenario */
  97.         return queue.poll();
  98.     }
  99.  
  100.     T peek() {
  101.         /* Initial Scenario */
  102.         if (this.isEmpty()) {
  103.             System.out.println("No elements");
  104.             return null;
  105.         }
  106.         /* Running Scenario */
  107.         return queue.peek();
  108.     }
  109.  
  110.     @Override
  111.     public String toString() {
  112.         return queue.toString();
  113.     }
  114. }
  115.  
  116. public class StackAndQueue {
  117.     public static void main(String args[]) {
  118.         //testStacks();
  119.         testQueues();
  120.     }
  121.  
  122.     public static void testStacks() {
  123.         Stack<Integer> stack = new Stack<>();
  124.         MyStack<Integer> myStack = new MyStack<>();
  125.         IntStream.rangeClosed(1, 10).forEach(stack::push);
  126.         IntStream.rangeClosed(1, 10).forEach(myStack::push);
  127.         System.out.println(stack);
  128.         System.out.println(myStack);
  129.  
  130.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  131.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  132.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  133.  
  134.         stack.push(22);
  135.         myStack.push(22);
  136.  
  137.         stack.push(33);
  138.         myStack.push(33);
  139.  
  140.         stack.push(44);
  141.         myStack.push(44);
  142.  
  143.         System.out.println(stack);
  144.         System.out.println(myStack);
  145.  
  146.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  147.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  148.         System.out.printf("S: %-10d   mS: %-10d\n", stack.pop(), myStack.pop());
  149.  
  150.         System.out.println(stack);
  151.         System.out.println(myStack);
  152.     }
  153.  
  154.     public static void testQueues() {
  155.         Queue<Integer> queue = new ArrayDeque<>();
  156.         MyQueue<Integer> myQueue = new MyQueue<>();
  157.         IntStream.rangeClosed(1, 10).forEach(queue::add);
  158.         IntStream.rangeClosed(1, 10).forEach(myQueue::enqueue);
  159.  
  160.         System.out.println(queue);
  161.         System.out.println(myQueue);
  162.  
  163.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  164.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  165.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  166.  
  167.         queue.add(22);
  168.         myQueue.enqueue(22);
  169.  
  170.         queue.add(33);
  171.         myQueue.enqueue(33);
  172.  
  173.         queue.add(44);
  174.         myQueue.enqueue(44);
  175.  
  176.         System.out.println(queue);
  177.         System.out.println(myQueue);
  178.  
  179.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  180.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  181.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  182.  
  183.         System.out.println(queue);
  184.         System.out.println(myQueue);
  185.  
  186.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  187.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  188.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  189.  
  190.         System.out.println(queue);
  191.         System.out.println(myQueue);
  192.  
  193.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  194.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  195.         System.out.printf("Q: %-10d   mQ: %-10d\n", queue.poll(), myQueue.dequeue());
  196.  
  197.         System.out.println(queue);
  198.         System.out.println(myQueue);
  199.  
  200.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  201.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  202.         System.out.printf("[Peek] Q: %-10d   mQ: %-10d\n", queue.peek(), myQueue.peek());
  203.  
  204.         System.out.println(queue);
  205.         System.out.println(myQueue);
  206.     }
  207. }
Add Comment
Please, Sign In to add comment