Advertisement
Shamel

Untitled

Oct 23rd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.54 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 Chp30Lab3
  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.         while(!queue.isEmpty())
  222.         {
  223.             myQueue.add(queue.peek());
  224.             temp.add(queue.remove());
  225.         }
  226.         while(!temp.isEmpty())
  227.         {
  228.             queue.add(temp.remove());
  229.         }
  230.        
  231.     }
  232.      
  233.    
  234.    
  235.     // copy constructor - recieves parameter queueManipObj(a QueueManipulate object), instantiates myQueue(of the curent oject in scope), and
  236.     // copies all data items from myQueue(of parameter queueManipObj, front to back) into myQueue(of the curent oject in scope, front to back)  
  237.     // all data items in myQueue(of the parameter queueManipObj) should not be affected and remain in the same order
  238.     public QueueManipulate(QueueManipulate queueManipObj)
  239.     {
  240.         myQueue=new LinkedList<E>();
  241.         queueManipObj.clone(this);
  242.     }
  243.    
  244.    
  245.    
  246.     // displays all data items in myQueue, front to back (each item on a seperate line) while preserving the order of data items in myQueue
  247.     public void display()  
  248.     {
  249.             Queue<E> temp=new LinkedList<E>();
  250.    
  251.           while(!myQueue.isEmpty())
  252.           {
  253.             E temp2=myQueue.remove();
  254.             temp.add(temp2);
  255.           }
  256.          
  257.           while(!temp.isEmpty())
  258.           {
  259.             E temp2=temp.remove();
  260.             System.out.println(temp2);
  261.             myQueue.add(temp2);
  262.           }
  263.     }
  264.    
  265.    
  266.    
  267.     // receives parameter target(of type E), removes the first occurrence of target from myQueue and leaves the remaining data items in myQueue intact 
  268.     // returns true if target found, returns false if target not found
  269.     public boolean removeFirst(E target)
  270.     {
  271.         Queue<E> temp=new LinkedList<E>();
  272.         int k=0;
  273.         while(!myQueue.isEmpty())
  274.           {
  275.             if(target.equals(myQueue.peek()) && k==0)
  276.             {
  277.             k=1;
  278.             myQueue.remove();
  279.             }
  280.             else
  281.                 temp.add(myQueue.remove());
  282.           }
  283.         while(!temp.isEmpty())
  284.         {
  285.             myQueue.add(temp.remove());
  286.         }
  287.          
  288.         return k==1;
  289.     }
  290.    
  291.    
  292.    
  293.     // receives parameter target(of type E), removes all occurrences of target from myQueue and leaves the remaining data items in myQueue intact  
  294.     // returns true if target(s) found, returns false if target(s) not found
  295.     public boolean removeAll(E target)
  296.     {
  297.         Queue<E> temp=new LinkedList<E>();
  298.         int k=0;
  299.         while(!myQueue.isEmpty())
  300.           {
  301.             if(target.equals(myQueue.peek()) )
  302.             {
  303.             k=1;
  304.             myQueue.remove();
  305.             }
  306.             else
  307.                 temp.add(myQueue.remove());
  308.           }
  309.         while(!temp.isEmpty())
  310.         {
  311.             myQueue.add(temp.remove());
  312.         }
  313.          
  314.         return k==1;
  315.     }
  316.    
  317.    
  318.    
  319.     // reverses the the data items in myQueue (ie.  1 2 3 4   shold now be   4 3 2 1)  
  320.     public void reverse()
  321.     {
  322.    
  323.     }
  324.    
  325.        
  326.        
  327.     // recieves parameter queueManipObj(a QueueManipulate object), copies all data items from myQueue(of the curent oject in scope, front to back)
  328.     // into myQueue(of parameter queueManipObj, front to back)
  329.     // this is a clone method not an append method  ***  myQueue of parameter queueManipObj should be empty before you copy data items
  330.     // all data items in myQueue(of the curent oject in scope) should not be affected and remain in the same order
  331.     public void clone(QueueManipulate queueManipObj)
  332.     {
  333.    
  334.     }
  335.    
  336.    
  337.    
  338.     // recieves parameter queueManipObj(a QueueManipulate object), copies all data items from myQueue(of parameter queueManipObj, front to back)
  339.     // to the back of myQueue(of the curent oject in scope)
  340.     // 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)  
  341.     // all data items in myQueue(of the parameter queueManipObj) should not be affected and remain in the same order
  342.     public void append(QueueManipulate queueManipObj)
  343.     {
  344.    
  345.     }
  346.    
  347.    
  348.    
  349.     // receives parameters target and newValue(both of type E), replaces ALL occurrences of target, contained in myQueue, with parameter newValue
  350.     // all other data items in myQueue should not be affected and remain in the same order
  351.     // return the amount of data items that were replaced
  352.     public int replace(E target, E newValue )
  353.     {
  354.        
  355.         return -999;
  356.     }
  357.    
  358.    
  359.    
  360.     // receives parameter target(of type E), searches myQueue for target, if target is found, return true and,
  361.     // move ALL occurrences of target to the front of myQueue (there may be one, more than one, or no occurrence of target)
  362.     // if target not found return false
  363.     // all other data items in myQueue should not be affected and remain in the same order         
  364.     public boolean moveToFront(E target)
  365.     {        
  366.        
  367.         return true;  
  368.     }
  369.        
  370.        
  371.        
  372.     // receives parameter target(of type E), searches myQueue for target, if target is found, return true and,
  373.     // move ALL occurrences of target to the back of myQueue (there may be one, more than one, or no occurrence of target)
  374.     // if target not found return false
  375.     // all other data items in myQueue should not be affected and remain in the same order         
  376.     public boolean moveToBack(E target)
  377.     {        
  378.        
  379.         return true;  
  380.     }  
  381.        
  382.          
  383.        
  384.     // receives parameters target and newValue(both of type E), searches myQueue for target, if target is found, return true and                                               
  385.     // insert the parameter newValue immediately BEFORE ALL occurrences of target(there may be one, more than one, or no occurrence of target)
  386.     // if target not found return false
  387.     // all other data items in myQueue should not be affected and remain in the same order         
  388.     public boolean insertItem(E target, E newValue)
  389.     {
  390.        
  391.         return true;  
  392.     }  
  393. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement