Filip_Markoski

[ADS] StackQueue

Nov 9th, 2017
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayDeque;
  5. import java.util.Queue;
  6.  
  7. public class StackQueue {
  8.     int stackSize;
  9.     int stackElems[];
  10.  
  11.     int queueSize;
  12.     int front, rear;
  13.     int queueElems[];
  14.  
  15.     public StackQueue(int maxStackSize, int maxQueueSize) {
  16.         clearStack();
  17.         clearQueue();
  18.         stackElems = new int[maxStackSize];
  19.         queueElems = new int[maxQueueSize];
  20.     }
  21.  
  22.     public void clearStack(){
  23.         for (int i = 0; i < stackSize; i++) {
  24.             stackElems[i] = 0;
  25.         }
  26.         stackSize = 0;
  27.     }
  28.  
  29.     public void clearQueue(){
  30.         queueSize = 0;
  31.         front = 0;
  32.         rear = 0;
  33.     }
  34.  
  35.     public boolean stackIsEmpty() {
  36.         return stackSize == 0;
  37.     }
  38.  
  39.     public boolean queueIsEmpty() {
  40.         return queueSize == 0;
  41.     }
  42.  
  43.  
  44.     public boolean isEmpty() {
  45.         return stackIsEmpty() && queueIsEmpty();
  46.     }
  47.  
  48.     public void push(int add){
  49.         stackElems[stackSize++] = add;
  50.     }
  51.     public int pop(){
  52.         int top = stackElems[--stackSize];
  53.         stackElems[stackSize] = -1;
  54.         return top;
  55.     }
  56.     public void enqueue(int add){
  57.         queueElems[rear++] = add;
  58.         if (rear == queueElems.length) {
  59.             rear = 0;
  60.         }
  61.         queueSize++;
  62.     }
  63.     public int dequeue () {
  64.         // Go otstranuva i vrakja pochetniot element na redicata.
  65.         if (queueSize > 0) {
  66.             int frontmost = queueElems[front];
  67.             queueElems[front++] = -1;
  68.             if (front == queueElems.length)  front = 0;
  69.             queueSize--;
  70.             return frontmost;
  71.         }
  72.         return 0;
  73.     }
  74.  
  75.     public void insertElement(int insert) {
  76.         if (stackSize != stackElems.length) {
  77.             push(insert);
  78.         } else if (queueSize != queueElems.length){
  79.             enqueue(insert);
  80.         }
  81.     }
  82.  
  83.     public int deleteElement(){
  84.         if (!isEmpty()){
  85.             int stackTemp = stackPeek();
  86.             int queueTemp = queuePeek();
  87.             if (stackTemp > queueTemp){
  88.                 return pop();
  89.             } else {
  90.                 return dequeue();
  91.             }
  92.         } else if (stackIsEmpty()){
  93.             return dequeue();
  94.         } else if (queueIsEmpty()){
  95.             return pop();
  96.         }
  97.         return -1;
  98.     }
  99.  
  100.     public int stackPeek(){
  101.         return stackElems[stackSize - 1];
  102.     }
  103.     public int queuePeek(){
  104.         return queueElems[front];
  105.     }
  106.  
  107.     public int peek(){
  108.         if (!isEmpty()){
  109.             int stackTemp = stackPeek();
  110.             int queueTemp = queuePeek();
  111.             if (stackTemp > queueTemp){
  112.                 return stackTemp;
  113.             } else {
  114.                 return queueTemp;
  115.             }
  116.         } else if (stackIsEmpty()){
  117.             return queuePeek();
  118.         } else if (queueIsEmpty()){
  119.             return stackPeek();
  120.         }
  121.         return -1;
  122.     }
  123.  
  124.     public static void main(String[] args) throws IOException {
  125.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  126.         int stackSize = Integer.parseInt(br.readLine());
  127.         int queueSize = Integer.parseInt(br.readLine());
  128.         int N = Integer.parseInt(br.readLine());
  129.         StackQueue stackqueue = new StackQueue(stackSize, queueSize);
  130.  
  131.         for (int i = 0; i < N; i++) {
  132.             stackqueue.insertElement(Integer.parseInt(br.readLine()));
  133.         }
  134.  
  135.         System.out.println(stackqueue.peek());
  136.  
  137.         for (int i = 0; i < N; i++) {
  138.             System.out.print(stackqueue.peek() + " ");
  139.             stackqueue.deleteElement();
  140.         }
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment