Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package DLList;
- public class DLList<T> {
- private DLNode<T> head;
- private DLNode<T> last;
- private int size;
- public DLList() {
- this.head = null;
- this.last = null;
- this.size = 0;
- }
- public boolean isEmpty() {
- return this.head == null;
- }
- public int size() {
- return this.size;
- }
- private DLNode<T> nodeAt(int index) {
- DLNode<T> current;
- if (index < size() / 2) {
- current = this.head;
- for (int i = 0; i < index; i++) {
- current = current.next;
- }
- } else {
- current = this.last;
- for (int i = size()-1; i >= index; i--) {
- current = current.prev;
- }
- }
- return current;
- }
- public T get(int index) {
- return nodeAt(index).value;
- }
- public void add(int index, T e) {
- DLNode<T> newNode = new DLNode<T>(null, e, null);
- if(index == 0 && size() == 0){
- this.head = newNode;
- this.last = newNode;
- } else if (index == 0 && size() > 0) {
- newNode.next = this.head.prev;
- head.prev = newNode;
- head = newNode;
- } else if (index == size()) {
- newNode.prev = this.last.next;
- last.next = newNode;
- last = newNode;
- } else {
- DLNode<T> pred = nodeAt(index-1);
- newNode.next = pred.next;
- pred.next = newNode;
- pred.next.prev = newNode;
- newNode.prev = pred;
- }
- size++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement