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