Advertisement
Shamel

ql33

Oct 24th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.94 KB | None | 0 0
  1. // Chp. 30 Lab 3  
  2. // Lab 3 involves manipulating a queue data structure
  3.  
  4. // no data structures may be used except for stacks and queues
  5.  
  6. // Queue methods that you are allowed to use are listed below:
  7. // public boolean add (E x),  public E remove(),  public E peek(),  public boolean isEmpty()
  8.        
  9. // Stack methods that you are allowed to use are listed below:
  10. // public boolean push (E x),  public E pop(),  public E peek(),  public boolean isEmpty()
  11.  
  12.  
  13. import java.util.*;
  14.  
  15. public class QueueLab3
  16. {
  17.     public static void main(String args[])
  18.     {
  19.         System.out.println("Java3016.java\n\n");
  20.        
  21.         // default constructor
  22.         QueueManipulate <Integer> aQueue = new QueueManipulate <Integer>();
  23.        
  24.         Queue<Integer> queue2 = new LinkedList<Integer>();
  25.         queue2.add(1); queue2.add(3); queue2.add(5);
  26.            
  27.         Queue<Integer> queue = new LinkedList<Integer>();
  28.         queue.add(2); queue.add(4); queue.add(6);
  29.         queue.add(2); queue.add(4); queue.add(6);
  30.         queue.add(2); queue.add(4); queue.add(6);
  31.         System.out.println(queue);
  32.        
  33.        
  34.         // overloaded constructor
  35.         QueueManipulate <Integer> myQueue = new QueueManipulate <Integer> (queue);
  36.         System.out.println("overloaded constructor"); myQueue.display(); System.out.println();
  37.        
  38.        
  39.         // copy constructor
  40.         QueueManipulate <Integer> ourQueue = new QueueManipulate <Integer> (myQueue);
  41.         System.out.println("\ncopy constructor\n");
  42.         System.out.println(ourQueue); ourQueue.display();
  43.         System.out.println("\n" + myQueue); myQueue.display();
  44.         queue = new LinkedList<Integer>();
  45.         queue.add(2); queue.add(4); queue.add(6);
  46.         queue.add(2); queue.add(4); queue.add(6);
  47.         queue.add(2); queue.add(4); queue.add(6);
  48.        
  49.         // removeFirst
  50.         System.out.println("\n\nremoveFirst\n");
  51.         myQueue = new QueueManipulate <Integer> (queue);
  52.         myQueue.removeFirst(6); myQueue.removeFirst(2); myQueue.display();
  53.         queue = new LinkedList<Integer>();
  54.         queue.add(2); queue.add(4); queue.add(6);
  55.         queue.add(2); queue.add(4); queue.add(6);
  56.         queue.add(2); queue.add(4); queue.add(6);
  57.        
  58.         // removeAll
  59.         System.out.println("\n\nremoveAll\n");
  60.         myQueue = new QueueManipulate <Integer> (queue);
  61.         myQueue.removeAll(2); myQueue.removeAll(4); myQueue.display();
  62.         queue = new LinkedList<Integer>();
  63.         queue.add(2); queue.add(4); queue.add(6);
  64.         queue.add(2); queue.add(4); queue.add(6);
  65.         queue.add(2); queue.add(4); queue.add(6);
  66.        
  67.         // reverse
  68.         System.out.println("\n\nreverse\n");
  69.         myQueue = new QueueManipulate <Integer> (queue);
  70.         myQueue.reverse(); myQueue.display();
  71.         queue = new LinkedList<Integer>();
  72.         queue.add(2); queue.add(4); queue.add(6);
  73.         queue.add(2); queue.add(4); queue.add(6);
  74.         queue.add(2); queue.add(4); queue.add(6);
  75.        
  76.         // clone
  77.         System.out.println("\n\nclone\n");
  78.         myQueue = new QueueManipulate <Integer> (queue);
  79.         aQueue = new QueueManipulate <Integer> (queue2);
  80.         System.out.println(aQueue); aQueue.display(); System.out.println();
  81.         System.out.println(myQueue); myQueue.display(); System.out.println();
  82.         myQueue.clone(aQueue); System.out.println(aQueue); aQueue.display();
  83.         System.out.println(); System.out.println(myQueue); myQueue.display();
  84.         queue = new LinkedList<Integer>();
  85.         queue.add(2); queue.add(4); queue.add(6);
  86.         queue.add(2); queue.add(4); queue.add(6);
  87.         queue.add(2); queue.add(4); queue.add(6);
  88.         queue2 = new LinkedList<Integer>();
  89.         queue2.add(1); queue2.add(3); queue2.add(5);  
  90.        
  91.         // append
  92.         System.out.println("\n\nappend\n");
  93.         myQueue = new QueueManipulate <Integer> (queue);
  94.         aQueue = new QueueManipulate <Integer> (queue2);
  95.         System.out.println(aQueue); aQueue.display(); System.out.println();
  96.         System.out.println(myQueue); myQueue.display(); System.out.println();
  97.         myQueue.append(aQueue); System.out.println(aQueue); aQueue.display();
  98.         System.out.println(); System.out.println(myQueue); myQueue.display();
  99.         queue = new LinkedList<Integer>();
  100.         queue.add(2); queue.add(4); queue.add(6);
  101.         queue.add(2); queue.add(4); queue.add(6);
  102.         queue.add(2); queue.add(4); queue.add(6);
  103.         queue2 = new LinkedList<Integer>();
  104.         queue2.add(1); queue2.add(3); queue2.add(5);
  105.        
  106.         // replace
  107.         System.out.println("\n\nreplace\n");
  108.         myQueue = new QueueManipulate <Integer> (queue);
  109.         System.out.println(); System.out.println(myQueue);
  110.         myQueue.display();System.out.println(); myQueue.replace(2,4);              
  111.         System.out.println(myQueue); myQueue.display();
  112.         queue = new LinkedList<Integer>();
  113.         queue.add(2); queue.add(4); queue.add(6);
  114.         queue.add(2); queue.add(4); queue.add(6);
  115.         queue.add(2); queue.add(4); queue.add(6);
  116.        
  117.         // moveToFront
  118.         System.out.println("\n\nmoveToFront\n");
  119.         myQueue = new QueueManipulate <Integer> (queue);
  120.         System.out.println(); System.out.println(myQueue);
  121.         myQueue.display(); System.out.println();    myQueue.moveToFront(4);            
  122.         System.out.println(myQueue); myQueue.display();
  123.         queue = new LinkedList<Integer>();
  124.         queue.add(2); queue.add(4); queue.add(6);
  125.         queue.add(2); queue.add(4); queue.add(6);
  126.         queue.add(2); queue.add(4); queue.add(6);
  127.        
  128.         // moveToBack
  129.         System.out.println("\n\nmoveToBack\n");
  130.         myQueue = new QueueManipulate <Integer> (queue);
  131.         System.out.println(); System.out.println(myQueue);
  132.         myQueue.display();System.out.println(); myQueue.moveToBack(2);             
  133.         System.out.println(myQueue); myQueue.display();
  134.         queue = new LinkedList<Integer>();
  135.         queue.add(2); queue.add(4); queue.add(6);
  136.         queue.add(2); queue.add(4); queue.add(6);
  137.         queue.add(2); queue.add(4); queue.add(6);
  138.        
  139.         // insertItem
  140.         System.out.println("\n\ninsertItem\n");
  141.         myQueue = new QueueManipulate <Integer> (queue);
  142.         System.out.println(); System.out.println(myQueue);
  143.         myQueue.display();System.out.println();
  144.         myQueue.insertItem(4,3); System.out.println(myQueue); myQueue.display();
  145.         queue = new LinkedList<Integer>();
  146.         queue.add(2); queue.add(4); queue.add(6);
  147.         queue.add(2); queue.add(4); queue.add(6);
  148.         queue.add(2); queue.add(4); queue.add(6);
  149.            
  150.            
  151.         /* 
  152.         aQueue = new QueueManipulate <Integer> (queue2);
  153.         System.out.println("\n\nremovefirst\n");
  154.         System.out.println(aQueue.removeFirst(5));
  155.         System.out.println(aQueue.removeFirst(6));
  156.         queue2 = new LinkedList<Integer>();
  157.         queue2.add(1); queue2.add(3); queue2.add(5);
  158.        
  159.         aQueue = new QueueManipulate <Integer> (queue2);
  160.         System.out.println("\n\nremoveAll\n");
  161.         System.out.println(aQueue.removeAll(5));
  162.         System.out.println(aQueue.removeAll(6));
  163.         queue2 = new LinkedList<Integer>();
  164.         queue2.add(1); queue2.add(3); queue2.add(5);
  165.        
  166.         myQueue = new QueueManipulate <Integer> (queue);
  167.         System.out.println("\n\nreplace\n");
  168.         System.out.println(myQueue.replace(5,4));
  169.         System.out.println(myQueue.replace(6,5));
  170.         queue = new LinkedList<Integer>();
  171.         queue.add(2); queue.add(4); queue.add(6);
  172.         queue.add(2); queue.add(4); queue.add(6);
  173.         queue.add(2); queue.add(4); queue.add(6);
  174.        
  175.         aQueue = new QueueManipulate <Integer> (queue2);
  176.         System.out.println("\n\nmoveToFront\n");
  177.         System.out.println(aQueue.moveToFront(5));
  178.         System.out.println(aQueue.moveToFront(6));
  179.         queue2 = new LinkedList<Integer>();
  180.         queue2.add(1); queue2.add(3); queue2.add(5);
  181.        
  182.         aQueue = new QueueManipulate <Integer> (queue2);
  183.         System.out.println("\n\nmoveToBack\n");
  184.         System.out.println(aQueue.moveToBack(2));
  185.         System.out.println(aQueue.moveToBack(5));
  186.         queue2 = new LinkedList<Integer>();
  187.         queue2.add(1); queue2.add(3); queue2.add(5);
  188.        
  189.         myQueue = new QueueManipulate <Integer> (queue);
  190.         System.out.println("\n\ninsert\n");
  191.         System.out.println(myQueue.insertItem(5,4));
  192.         System.out.println(myQueue.insertItem(6,5));
  193.         queue = new LinkedList<Integer>();
  194.         queue.add(2); queue.add(4); queue.add(6);
  195.         queue.add(2); queue.add(4); queue.add(6);
  196.         queue.add(2); queue.add(4); queue.add(6);
  197.         */
  198.    
  199.         System.out.println("\n\n");
  200.     }
  201. }
  202.    
  203. class QueueManipulate<E>
  204. {
  205.    
  206.     private Queue <E> myQueue;
  207.      
  208.     // default constructor - instantiates myQueue, myQueue should be empty after this constructor call
  209.     public QueueManipulate()
  210.     {
  211.         myQueue=new LinkedList<E>();
  212.     }
  213.    
  214.    
  215.    
  216.     // overloaded constructor - recieves parameter queue(a queue of type E), instantiates myQueue, and
  217.     // copies all data items from parameter queue(front to back) into myQueue(front to back)
  218.     public QueueManipulate(Queue <E> queue)
  219.     {
  220.         Queue<E> temp=new LinkedList<E>();
  221.         myQueue=new LinkedList<E>();
  222.         while(!queue.isEmpty())
  223.         {
  224.             myQueue.add(queue.peek());
  225.             temp.add(queue.remove());
  226.         }
  227.         while(!temp.isEmpty())
  228.         {
  229.             queue.add(temp.remove());
  230.         }
  231.        
  232.     }
  233.      
  234.    
  235.    
  236.     // copy constructor - recieves parameter queueManipObj(a QueueManipulate object), instantiates myQueue(of the curent oject in scope), and
  237.     // copies all data items from myQueue(of parameter queueManipObj, front to back) into myQueue(of the curent oject in scope, front to back)  
  238.     // all data items in myQueue(of the parameter queueManipObj) should not be affected and remain in the same order
  239.     public QueueManipulate(QueueManipulate queueManipObj)
  240.     {
  241.         myQueue=new LinkedList<E>();
  242.         queueManipObj.clone(this);
  243.     }
  244.    
  245.    
  246.    
  247.     // displays all data items in myQueue, front to back (each item on a seperate line) while preserving the order of data items in myQueue
  248.     public void display()  
  249.     {
  250.             Queue<E> temp=new LinkedList<E>();
  251.    
  252.           while(!myQueue.isEmpty())
  253.           {
  254.             E temp2=myQueue.remove();
  255.             temp.add(temp2);
  256.           }
  257.          
  258.           while(!temp.isEmpty())
  259.           {
  260.             E temp2=temp.remove();
  261.             System.out.println(temp2);
  262.             myQueue.add(temp2);
  263.           }
  264.     }
  265.    
  266.    
  267.    
  268.     // receives parameter target(of type E), removes the first occurrence of target from myQueue and leaves the remaining data items in myQueue intact 
  269.     // returns true if target found, returns false if target not found
  270.     public boolean removeFirst(E target)
  271.     {
  272.         Queue<E> temp=new LinkedList<E>();
  273.         int k=0;
  274.         while(!myQueue.isEmpty())
  275.           {
  276.             if(target.equals(myQueue.peek()) && k==0)
  277.             {
  278.             k=1;
  279.             myQueue.remove();
  280.             }
  281.             else
  282.                 temp.add(myQueue.remove());
  283.           }
  284.         while(!temp.isEmpty())
  285.         {
  286.             myQueue.add(temp.remove());
  287.         }
  288.          
  289.         return k==1;
  290.     }
  291.    
  292.    
  293.    
  294.     // receives parameter target(of type E), removes all occurrences of target from myQueue and leaves the remaining data items in myQueue intact  
  295.     // returns true if target(s) found, returns false if target(s) not found
  296.     public boolean removeAll(E target)
  297.     {
  298.         Queue<E> temp=new LinkedList<E>();
  299.         int k=0;
  300.         while(!myQueue.isEmpty())
  301.           {
  302.             if(target.equals(myQueue.peek()) )
  303.             {
  304.             k=1;
  305.             myQueue.remove();
  306.             }
  307.             else
  308.                 temp.add(myQueue.remove());
  309.           }
  310.         while(!temp.isEmpty())
  311.         {
  312.             myQueue.add(temp.remove());
  313.         }
  314.          
  315.         return k==1;
  316.     }
  317.    
  318.    
  319.    
  320.     // reverses the the data items in myQueue (ie.  1 2 3 4   shold now be   4 3 2 1)  
  321.     public void reverse()
  322.     {
  323.         Stack<E> stack= new Stack<E>();
  324.         while(!myQueue.isEmpty())
  325.         {
  326.             stack.push(myQueue.remove());
  327.         }
  328.        
  329.         while(!stack.isEmpty())
  330.         {
  331.             myQueue.add(stack.pop());
  332.         }
  333.     }
  334.    
  335.        
  336.        
  337.     // recieves parameter queueManipObj(a QueueManipulate object), copies all data items from myQueue(of the curent oject in scope, front to back)
  338.     // into myQueue(of parameter queueManipObj, front to back)
  339.     // this is a clone method not an append method  ***  myQueue of parameter queueManipObj should be empty before you copy data items
  340.     // all data items in myQueue(of the curent object in scope) should not be affected and remain in the same order
  341.     public void clone(QueueManipulate queueManipObj)
  342.     {
  343.             Queue<E> queue = new LinkedList<E>();
  344.            
  345.             while(!myQueue.isEmpty())
  346.             {
  347.                 queue.add(myQueue.peek());
  348.                 queueManipObj.getQueue().add(myQueue.remove());
  349.             }
  350.            
  351.             while(!queue.isEmpty())
  352.             {
  353.                 myQueue.add(queue.remove());
  354.             }
  355.            
  356.     }
  357.    
  358.    
  359.    
  360.     // recieves parameter queueManipObj(a QueueManipulate object), copies all data items from myQueue(of parameter queueManipObj, front to back)
  361.     // to the back of myQueue(of the curent oject in scope)
  362.     // this is an append method not a copy constructor or clone method  ***  do not remove any data items in myQueue of (of the curent oject in scope)  
  363.     // all data items in myQueue(of the parameter queueManipObj) should not be affected and remain in the same order
  364.     public void append(QueueManipulate queueManipObj)
  365.     {
  366.         Queue<E> queue = new LinkedList<E>();
  367.        
  368.         while(!queueManipObj.getQueue().isEmpty())
  369.         {
  370.             queue.add(myQueue.peek());
  371.              myQueue.add((E) queueManipObj.getQueue().remove());
  372.         }
  373.        
  374.         while(!queue.isEmpty())
  375.         {
  376.             queueManipObj.getQueue().add(queue.remove());
  377.         }
  378.     }
  379.    
  380.    
  381.    
  382.     // receives parameters target and newValue(both of type E), replaces ALL occurrences of target, contained in myQueue, with parameter newValue
  383.     // all other data items in myQueue should not be affected and remain in the same order
  384.     // return the amount of data items that were replaced
  385.     public int replace(E target, E newValue )
  386.     {
  387.         Queue<E> temp=new LinkedList<E>();
  388.         int k=0;
  389.         while(!myQueue.isEmpty())
  390.           {
  391.             if(target.equals(myQueue.peek()) )
  392.             {
  393.             k=1;
  394.             myQueue.remove();
  395.             temp.add(newValue);
  396.             }
  397.             else
  398.                 temp.add(myQueue.remove());
  399.           }
  400.         while(!temp.isEmpty())
  401.         {
  402.             myQueue.add(temp.remove());
  403.         }
  404.          
  405.        
  406.        
  407.         return -999;
  408.     }
  409.    
  410.    
  411.    
  412.     // receives parameter target(of type E), searches myQueue for target, if target is found, return true and,
  413.     // move ALL occurrences of target to the front of myQueue (there may be one, more than one, or no occurrence of target)
  414.     // if target not found return false
  415.     // all other data items in myQueue should not be affected and remain in the same order         
  416.     public boolean moveToFront(E target)
  417.     {
  418.         Queue<E> temp=new LinkedList<E>();
  419.         boolean TF=false;
  420.         Queue<E> tempnon=new LinkedList<E>();
  421.        
  422.         while(!myQueue.isEmpty())
  423.           {
  424.             if(myQueue.peek().equals(target))
  425.                 temp.add(myQueue.remove());
  426.             else
  427.                 tempnon.add(myQueue.remove());
  428.             while(!temp.isEmpty())
  429.             {
  430.                 myQueue.add(temp.remove());
  431.                 TF=true;
  432.             }
  433.             while(!tempnon.isEmpty())
  434.             {
  435.                 myQueue.add(tempnon.remove());
  436.             }
  437.            
  438.           }
  439.         return TF;  
  440.     }
  441.        
  442.        
  443.        
  444.     // receives parameter target(of type E), searches myQueue for target, if target is found, return true and,
  445.     // move ALL occurrences of target to the back of myQueue (there may be one, more than one, or no occurrence of target)
  446.     // if target not found return false
  447.     // all other data items in myQueue should not be affected and remain in the same order         
  448.     public boolean moveToBack(E target)
  449.     {        
  450.        
  451.         Queue<E> temp=new LinkedList<E>();
  452.         boolean TF=false;
  453.         Queue<E> tempnon=new LinkedList<E>();
  454.        
  455.         while(!myQueue.isEmpty())
  456.           {
  457.             if(myQueue.peek().equals(target))
  458.                 temp.add(myQueue.remove());
  459.             else
  460.                 tempnon.add(myQueue.remove());
  461.             while(!tempnon.isEmpty())
  462.             {
  463.                 myQueue.add(tempnon.remove());
  464.                
  465.             }
  466.             while(!temp.isEmpty())
  467.             {
  468.                 myQueue.add(temp.remove());
  469.                 TF=true;
  470.             }
  471.            
  472.           }
  473.         return TF;  
  474.     }  
  475.        
  476.          
  477.        
  478.     // receives parameters target and newValue(both of type E), searches myQueue for target, if target is found, return true and                                               
  479.     // insert the parameter newValue immediately BEFORE ALL occurrences of target(there may be one, more than one, or no occurrence of target)
  480.     // if target not found return false
  481.     // all other data items in myQueue should not be affected and remain in the same order         
  482.     public boolean insertItem(E target, E newValue)
  483.     {
  484.         Queue<E> temp=new LinkedList<E>();
  485.         int k=0;
  486.         while(!myQueue.isEmpty())
  487.           {
  488.             if(target.equals(myQueue.peek()) )
  489.             {
  490.             k=1;
  491.             temp.add(newValue);
  492.             temp.add(myQueue.remove());
  493.            
  494.             }
  495.             else
  496.                 temp.add(myQueue.remove());
  497.           }
  498.         while(!temp.isEmpty())
  499.         {
  500.             myQueue.add(temp.remove());
  501.         }
  502.          
  503.        
  504.        
  505.         return k==1;
  506.        
  507.  
  508.     }
  509.    
  510.     public Queue getQueue()
  511.     {
  512.         return myQueue;
  513.     }
  514.    
  515.    
  516. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement