Added insert by index
Added insert by index
This commit is contained in:
parent
0c75460ca6
commit
73888a68ea
@ -24,12 +24,18 @@ public class DoublyLinkedList {
|
|||||||
*/
|
*/
|
||||||
private Link tail;
|
private Link tail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size refers to the number of elements present in the list
|
||||||
|
*/
|
||||||
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default Constructor
|
* Default Constructor
|
||||||
*/
|
*/
|
||||||
public DoublyLinkedList() {
|
public DoublyLinkedList() {
|
||||||
head = null;
|
head = null;
|
||||||
tail = null;
|
tail = null;
|
||||||
|
size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,6 +49,7 @@ public class DoublyLinkedList {
|
|||||||
for (int i : array) {
|
for (int i : array) {
|
||||||
insertTail(i);
|
insertTail(i);
|
||||||
}
|
}
|
||||||
|
size = array.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,6 +65,7 @@ public class DoublyLinkedList {
|
|||||||
head.previous = newLink; // newLink <-- currenthead(head)
|
head.previous = newLink; // newLink <-- currenthead(head)
|
||||||
newLink.next = head; // newLink <--> currenthead(head)
|
newLink.next = head; // newLink <--> currenthead(head)
|
||||||
head = newLink; // newLink(head) <--> oldhead
|
head = newLink; // newLink(head) <--> oldhead
|
||||||
|
++size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -76,6 +84,38 @@ public class DoublyLinkedList {
|
|||||||
newLink.previous = tail; // currentTail(tail) <--> newLink -->
|
newLink.previous = tail; // currentTail(tail) <--> newLink -->
|
||||||
tail = newLink; // oldTail <--> newLink(tail) -->
|
tail = newLink; // oldTail <--> newLink(tail) -->
|
||||||
}
|
}
|
||||||
|
++size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert an element at the index
|
||||||
|
*
|
||||||
|
* @param x Element to be inserted
|
||||||
|
* @param index Index(from start) at which the element x to be inserted
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void insertElementByIndex(int x,int index){
|
||||||
|
if(index > size) throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
|
||||||
|
if(index == 0){
|
||||||
|
insertHead(x);
|
||||||
|
}else{
|
||||||
|
if(index == size){
|
||||||
|
insertTail(x);
|
||||||
|
}else{
|
||||||
|
Link newLink = new Link(x);
|
||||||
|
Link previousLink = head; //
|
||||||
|
for(int i = 1; i < index; i++){ //Loop to reach the index
|
||||||
|
previousLink = previousLink.next;
|
||||||
|
}
|
||||||
|
// previousLink is the Link at index - 1 from start
|
||||||
|
previousLink.next.previous = newLink;
|
||||||
|
newLink.next = previousLink.next;
|
||||||
|
newLink.previous = previousLink;
|
||||||
|
previousLink.next = newLink;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
++size;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,6 +132,7 @@ public class DoublyLinkedList {
|
|||||||
} else {
|
} else {
|
||||||
head.previous = null; // oldHead --> 2ndElement(head) nothing pointing at old head so will be removed
|
head.previous = null; // oldHead --> 2ndElement(head) nothing pointing at old head so will be removed
|
||||||
}
|
}
|
||||||
|
--size;
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +150,7 @@ public class DoublyLinkedList {
|
|||||||
} else{
|
} else{
|
||||||
tail.next = null; // 2ndLast(tail) --> null
|
tail.next = null; // 2ndLast(tail) --> null
|
||||||
}
|
}
|
||||||
|
--size;
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,6 +181,7 @@ public class DoublyLinkedList {
|
|||||||
current.previous.next = current.next; // 1 --> 3
|
current.previous.next = current.next; // 1 --> 3
|
||||||
current.next.previous = current.previous; // 1 <--> 3
|
current.next.previous = current.previous; // 1 <--> 3
|
||||||
}
|
}
|
||||||
|
--size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,6 +207,7 @@ public class DoublyLinkedList {
|
|||||||
newLink.next = current; // 1 <--> newLink --> 2(current) <--> 3
|
newLink.next = current; // 1 <--> newLink --> 2(current) <--> 3
|
||||||
current.previous = newLink; // 1 <--> newLink <--> 2(current) <--> 3
|
current.previous = newLink; // 1 <--> newLink <--> 2(current) <--> 3
|
||||||
}
|
}
|
||||||
|
++size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -178,9 +221,10 @@ public class DoublyLinkedList {
|
|||||||
} else if(z == head){
|
} else if(z == head){
|
||||||
deleteHead();
|
deleteHead();
|
||||||
} else{ //before <-- 1 <--> 2(z) <--> 3 -->
|
} else{ //before <-- 1 <--> 2(z) <--> 3 -->
|
||||||
z.previous.next = z.next // 1 --> 3
|
z.previous.next = z.next; // 1 --> 3
|
||||||
z.next.previous = z.previous // 1 <--> 3
|
z.next.previous = z.previous; // 1 <--> 3
|
||||||
}
|
}
|
||||||
|
--size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeDuplicates(DoublyLinkedList l ) {
|
public static void removeDuplicates(DoublyLinkedList l ) {
|
||||||
@ -196,6 +240,16 @@ public class DoublyLinkedList {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears List
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void clearList(){
|
||||||
|
head = null;
|
||||||
|
tail = null;
|
||||||
|
size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if list is empty
|
* Returns true if list is empty
|
||||||
*
|
*
|
||||||
@ -279,5 +333,11 @@ class Link {
|
|||||||
myList.insertOrdered(67);
|
myList.insertOrdered(67);
|
||||||
myList.insertOrdered(3);
|
myList.insertOrdered(3);
|
||||||
myList.display(); // <-- 3(head) <--> 10 <--> 13 <--> 23 <--> 67(tail) -->
|
myList.display(); // <-- 3(head) <--> 10 <--> 13 <--> 23 <--> 67(tail) -->
|
||||||
|
myList.insertElementByIndex(5, 1);
|
||||||
|
myList.display(); // <-- 3(head) <--> 5 <--> 10 <--> 13 <--> 23 <--> 67(tail) -->
|
||||||
|
myList.clearList();
|
||||||
|
myList.display();
|
||||||
|
myList.insertHead(20);
|
||||||
|
myList.display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user