public void add(int index, E element) { CNode temp,temp1; if (totalSize==0) { // Must add to front front = new CNode(); front.data = element; front.chunkSize = 1; totalSize++; } else { // Add to the position it asks for if (front.chunkSize < maxiChunk) { // We can add it still CNode newNode = new CNode(); newNode.data = element; if (index == 0) { // Add to the front temp = front; front = newNode; front.next = temp; (front.next).previous = front; front.chunkSize = (temp.chunkSize+1); } else if (index > (front.chunkSize-1)) { // Add to the end temp = front; for (int i=0;i<(front.chunkSize-1);i++) temp = temp.next; temp.next = newNode; (temp.next).previous = temp; front.chunkSize++; } else { // Add where asked temp = front; for (int i=0;i<index;i++) temp = temp.next; newNode.next = temp; (newNode.next).previous = newNode; } totalSize++; } else { // Need to create a new chunk temp = front; while (temp.chunkSize >= maxiChunk) { if (temp.nextChunk == null) { CNode newNode = new CNode(); newNode.data = element; newNode.chunkSize = 1; totalSize++; temp.nextChunk = newNode; newNode.previousChunk = temp; break; } else { temp = temp.nextChunk; } } } } }