Guest User

Untitled

a guest
Feb 24th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. public class ArrayDeque<T> {
  2. int initial_size = 8;
  3. int list_size;
  4. int front_pos, end_pos;
  5. T[] list;
  6.  
  7. public ArrayDeque(){
  8. list = (T[]) new Object[initial_size];
  9. list_size = 0;
  10. front_pos = 0;
  11. end_pos = 1;
  12. }
  13.  
  14. public T[] resize(){
  15. T[] temp = list;
  16. list = (T[]) new Object[list_size * 2];
  17. // System.arraycopy(temp, 0, list, 0, temp.length);
  18. for (int i = 0; i < list_size; i++){
  19. list[i] = temp[(front_pos + i + 1) % list_size];
  20. }
  21. front_pos = list.length - 1;
  22. end_pos = list_size;
  23. return list;
  24. }
  25.  
  26. public void addFirst(T item){
  27. if (list_size == list.length){
  28. resize();
  29. }
  30. list[front_pos] = item;
  31. front_pos--;
  32. if (front_pos < 0){
  33. front_pos = list.length - 1;
  34. }
  35. list_size++;
  36. }
  37.  
  38. public void addLast(T item){
  39. if (list_size == list.length){
  40. resize();
  41. }
  42. list[end_pos] = item;
  43. end_pos = (end_pos + 1) % list.length;
  44. list_size += 1;
  45. return;
  46. }
  47.  
  48.  
  49. public void printDeque(){
  50. for (int i = 0; i < list_size; i++){
  51. int p = (i + front_pos + 1) % list.length;
  52. System.out.printf("%s ", list[p]);
  53. }
  54. System.out.println();
  55. }
  56.  
  57. public T removeFirst(){
  58. int ret_pos = (front_pos + 1) % list_size;
  59. T ret = list[ret_pos];
  60. list[ret_pos] = null;
  61. front_pos = ret_pos;
  62. list_size -= 1;
  63. return ret;
  64. }
  65.  
  66.  
  67. public T removeLast(){
  68. int ret_pos = (end_pos - 1 + list.length) % list.length;
  69. T ret = list[ret_pos];
  70. list[ret_pos] = null;
  71. end_pos = ret_pos;
  72. list_size -= 1;
  73. return ret;
  74. }
  75.  
  76. public void p(){
  77. for (int i = 0; i < list.length; i++){
  78. System.out.printf("%s ", list[i]);
  79. }
  80. System.out.println();
  81. }
  82.  
  83. public static void main(String[] args){
  84. ArrayDeque<Integer> a = new ArrayDeque<>();
  85. for (Integer i = 0; i < 9; i++){
  86. a.addFirst(i);
  87. a.addLast(i + 100);
  88. a.printDeque();
  89. // System.out.println(a.list_size);
  90. }
  91. for (Integer i = 0; i < 9; i++) {
  92. a.addLast(i + 100);
  93. a.printDeque();
  94. System.out.println(a.list_size);
  95. }
  96.  
  97. }
  98. }
Add Comment
Please, Sign In to add comment