Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Practice_Queue {
- public static void main(String[] args) {
- Queue<Integer> q1 = new Queue<Integer>();
- q1.insert(1);
- q1.insert(7);
- q1.insert(3);
- q1.insert(4);
- q1.insert(0);
- q1.insert(0);
- q1.insert(5);
- q1.insert(5);
- q1.insert(3);
- System.out.println("before:");
- printQueue(q1);
- System.out.println();
- Queue<Integer> q2 = dupi(q1);
- System.out.println("after");
- printQueue(q2);
- }
- /*
- * input - node-list of integers and a int value
- * return - the list without the elements containing the value
- */
- public static Node<Integer> deleteValue(Node<Integer> lst, int val) {
- //if first elements are equal value
- while(lst!=null && lst.getValue()==val) {
- lst = lst.getNext();
- }
- //no occurrence of value
- if(lst==null)
- return null;
- Node<Integer> nd = lst;
- //last element have to delete
- if(nd.getNext() == null) {
- return nd;
- }
- boolean go = true;
- Node<Integer> nxtNd = lst.getNext();
- //search node to delete
- while(nxtNd!=null && go) {
- if( nxtNd.getValue()==val) {
- go =false;
- if(nxtNd.getNext()==null) {
- //last is the one to delete
- nd.setNext(null);
- return lst;
- }
- //node to delete is in middle
- else {
- nxtNd = nxtNd.getNext();
- nd.setNext(nxtNd);
- }
- }
- //not found proceed to next nodes
- else {
- nd = nxtNd;
- nxtNd = nxtNd.getNext();
- }
- }
- return lst;
- }
- /*
- * input - queue of integers
- * return - new queue with numbers appears more than one
- */
- public static Queue<Integer> dupi(Queue<Integer> oldQ){
- int val = 0;
- Node<Integer> q_List = new Node<Integer>(oldQ.remove());
- Queue<Integer> q = new Queue<Integer>();
- Node<Integer> nd1 = q_List;
- //copy queue o node-list
- while(!oldQ.isEmpty()) {
- val = oldQ.remove();
- q_List.setNext(new Node<Integer>(val));
- q_List = q_List.getNext();
- q.insert(val);
- }
- boolean init = true;
- //Node<Integer> list;
- Queue<Integer> newQ = new Queue<Integer>();
- while(!q.isEmpty() && q_List!=null) {
- val = q.remove();
- if(val_In_list(nd1, val) > 1) {
- nd1 = deleteValue(nd1, val);
- oldQ.insert(val);
- }
- }
- return oldQ;
- }
- /*
- * input - queue of integers
- * output - print queue
- */
- public static void printQueue(Queue<Integer> q) {
- Queue<Integer> tmp = new Queue<Integer>();
- System.out.print(" ");
- while(!q.isEmpty()) {
- System.out.print(q.head()+"|");
- tmp.insert(q.remove());
- }
- while(!tmp.isEmpty()) {
- q.insert(tmp.remove());
- }
- System.out.println("null");
- }
- //prints the given chain
- public static void printChain(Node<Integer> first){
- while(first.hasNext()) {
- System.out.print(first.getValue() + "->");
- first = first.getNext();
- }
- System.out.print(first.getValue() + "->null\n");
- }
- //how many times value appear in list
- public static int val_In_list(Node<Integer> lst, int value){
- int times = 0;
- while(lst!=null) {
- if(lst.getValue() == value)
- times++;
- lst = lst.getNext();
- }
- return times;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement