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.chunkSize++; front.next = temp; (front.next).previous = front; } else if (index > (front.chunkSize-1)) { // Add to the end front.chunkSize++; temp = front; for (int i=0;i<(front.chunkSize-1);i++) temp = temp.next; temp.next = newNode; (temp.next).previous = temp; } else { // Add where asked front.chunkSize++; temp = front; for (int i=0;i= maxiChunk) { if (temp.nextChunk == null) { CNode newNode = new CNode(); newNode.data = element; newNode.chunkSize = 1; totalSize++; temp.nextChunk = newNode; (temp.nextChunk).previousChunk = temp; // Now add reference to the last element of the // previous Node. temp1 = temp; while (temp1.next != null) { temp1 = temp1.next; } temp1.next = temp.nextChunk; (temp.nextChunk).previous = temp; break; } else { temp = temp.nextChunk; } } } } }