Advertisement
porteno

excerise_1_solution

Dec 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1.  
  2. public class Practice_Queue {
  3.  
  4. public static void main(String[] args) {
  5. Queue<Integer> q1 = new Queue<Integer>();
  6. q1.insert(1);
  7. q1.insert(7);
  8. q1.insert(3);
  9. q1.insert(4);
  10. q1.insert(0);
  11. q1.insert(0);
  12. q1.insert(5);
  13. q1.insert(5);
  14. q1.insert(3);
  15. System.out.println("before:");
  16. printQueue(q1);
  17. System.out.println();
  18. Queue<Integer> q2 = dupi(q1);
  19. System.out.println("after");
  20. printQueue(q2);
  21. }
  22.  
  23. /*
  24. * input - node-list of integers and a int value
  25. * return - the list without the elements containing the value
  26. */
  27. public static Node<Integer> deleteValue(Node<Integer> lst, int val) {
  28. //if first elements are equal value
  29. while(lst!=null && lst.getValue()==val) {
  30. lst = lst.getNext();
  31. }
  32. //no occurrence of value
  33. if(lst==null)
  34. return null;
  35.  
  36. Node<Integer> nd = lst;
  37. //last element have to delete
  38. if(nd.getNext() == null) {
  39. return nd;
  40. }
  41.  
  42. boolean go = true;
  43. Node<Integer> nxtNd = lst.getNext();
  44. //search node to delete
  45. while(nxtNd!=null && go) {
  46. if( nxtNd.getValue()==val) {
  47. go =false;
  48. if(nxtNd.getNext()==null) {
  49. //last is the one to delete
  50. nd.setNext(null);
  51. return lst;
  52. }
  53. //node to delete is in middle
  54. else {
  55. nxtNd = nxtNd.getNext();
  56. nd.setNext(nxtNd);
  57. }
  58. }
  59. //not found proceed to next nodes
  60. else {
  61. nd = nxtNd;
  62. nxtNd = nxtNd.getNext();
  63. }
  64. }
  65. return lst;
  66. }
  67.  
  68.  
  69. /*
  70. * input - queue of integers
  71. * return - new queue with numbers appears more than one
  72. */
  73. public static Queue<Integer> dupi(Queue<Integer> oldQ){
  74. int val = 0;
  75. Node<Integer> q_List = new Node<Integer>(oldQ.remove());
  76. Queue<Integer> q = new Queue<Integer>();
  77. Node<Integer> nd1 = q_List;
  78. //copy queue o node-list
  79. while(!oldQ.isEmpty()) {
  80. val = oldQ.remove();
  81. q_List.setNext(new Node<Integer>(val));
  82. q_List = q_List.getNext();
  83. q.insert(val);
  84. }
  85. boolean init = true;
  86. //Node<Integer> list;
  87. Queue<Integer> newQ = new Queue<Integer>();
  88. while(!q.isEmpty() && q_List!=null) {
  89. val = q.remove();
  90. if(val_In_list(nd1, val) > 1) {
  91. nd1 = deleteValue(nd1, val);
  92. oldQ.insert(val);
  93. }
  94. }
  95. return oldQ;
  96. }
  97. /*
  98. * input - queue of integers
  99. * output - print queue
  100. */
  101. public static void printQueue(Queue<Integer> q) {
  102. Queue<Integer> tmp = new Queue<Integer>();
  103. System.out.print(" ");
  104. while(!q.isEmpty()) {
  105. System.out.print(q.head()+"|");
  106. tmp.insert(q.remove());
  107. }
  108. while(!tmp.isEmpty()) {
  109.  
  110. q.insert(tmp.remove());
  111. }
  112. System.out.println("null");
  113.  
  114. }
  115.  
  116. //prints the given chain
  117. public static void printChain(Node<Integer> first){
  118. while(first.hasNext()) {
  119. System.out.print(first.getValue() + "->");
  120. first = first.getNext();
  121. }
  122. System.out.print(first.getValue() + "->null\n");
  123.  
  124. }
  125.  
  126. //how many times value appear in list
  127. public static int val_In_list(Node<Integer> lst, int value){
  128. int times = 0;
  129. while(lst!=null) {
  130. if(lst.getValue() == value)
  131. times++;
  132.  
  133. lst = lst.getNext();
  134. }
  135. return times;
  136. }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement