Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. package DLList;
  2.  
  3. public class DLList<T> {
  4.  
  5. private DLNode<T> head;
  6. private DLNode<T> last;
  7. private int size;
  8.  
  9. public DLList() {
  10. this.head = null;
  11. this.last = null;
  12. this.size = 0;
  13. }
  14.  
  15. public boolean isEmpty() {
  16. return this.head == null;
  17. }
  18.  
  19. public int size() {
  20.  
  21. return this.size;
  22. }
  23.  
  24. private DLNode<T> nodeAt(int index) {
  25.  
  26. DLNode<T> current;
  27.  
  28. if (index < size() / 2) {
  29. current = this.head;
  30. for (int i = 0; i < index; i++) {
  31. current = current.next;
  32.  
  33. }
  34. } else {
  35. current = this.last;
  36. for (int i = size()-1; i >= index; i--) {
  37. current = current.prev;
  38. }
  39.  
  40. }
  41. return current;
  42. }
  43.  
  44. public T get(int index) {
  45.  
  46. return nodeAt(index).value;
  47. }
  48.  
  49. public void add(int index, T e) {
  50.  
  51. DLNode<T> newNode = new DLNode<T>(null, e, null);
  52.  
  53. if(index == 0 && size() == 0){
  54.  
  55. this.head = newNode;
  56. this.last = newNode;
  57.  
  58. } else if (index == 0 && size() > 0) {
  59.  
  60. newNode.next = this.head.prev;
  61. head.prev = newNode;
  62. head = newNode;
  63.  
  64.  
  65. } else if (index == size()) {
  66. newNode.prev = this.last.next;
  67. last.next = newNode;
  68. last = newNode;
  69.  
  70. } else {
  71.  
  72. DLNode<T> pred = nodeAt(index-1);
  73.  
  74. newNode.next = pred.next;
  75. pred.next = newNode;
  76.  
  77. pred.next.prev = newNode;
  78. newNode.prev = pred;
  79.  
  80.  
  81. }
  82. size++;
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement