Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5ba5180

Browse files
author
Ram swaroop
committed
linkedlist: add at index done
1 parent acc679f commit 5ba5180

File tree

2 files changed

+40
-7
lines changed

2 files changed

+40
-7
lines changed

src/me/ramswaroop/Main.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,22 +98,32 @@ public static void main(String[] args) {
9898
out.println("Select operation:");
9999
out.println("=================");
100100
out.println("1. Add");
101-
out.println("2. Remove");
102-
out.println("3. Print");
103-
out.println("4. Exit module");
101+
out.println("2. Add at index");
102+
out.println("3. Remove");
103+
out.println("4. Print");
104+
out.println("5. Exit module");
104105
k2 = Integer.parseInt(in.nextLine());
106+
int input, index;
105107
switch (k2) {
106108
case 1:
107109
out.println("Enter value:");
108-
int input = Integer.parseInt(in.nextLine());
110+
input = Integer.parseInt(in.nextLine());
109111
singleLinkedList.add(input);
110112
singleLinkedList.printList();
111113
break;
112114
case 2:
113-
out.println("Removed element: " + singleLinkedList.remove());
115+
out.println("Enter value:");
116+
input = Integer.parseInt(in.nextLine());
117+
out.println("Enter index:");
118+
index = Integer.parseInt(in.nextLine());
119+
singleLinkedList.add(index, input);
114120
singleLinkedList.printList();
115121
break;
116122
case 3:
123+
out.println("Removed element: " + singleLinkedList.remove());
124+
singleLinkedList.printList();
125+
break;
126+
case 4:
117127
singleLinkedList.printList();
118128
break;
119129
case 5:

src/me/ramswaroop/linkedlists/SingleLinkedList.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,28 @@ public boolean add(E item) {
3434

3535
@Override
3636
public boolean add(int index, E item) {
37-
return false;
37+
// base case
38+
if (index > size) {
39+
throw new IndexOutOfBoundsException("LinkedList isn't long enough.");
40+
}
41+
// linkedlist is empty
42+
if (head == null) {
43+
head = new Node<>(item, null);
44+
} else if (index == 0) { // add at first
45+
Node<E> newNode = new Node<>(item, head);
46+
head = newNode;
47+
} else { // add at any other location
48+
Node<E> curr = head;
49+
int i = 0;
50+
while (i < index - 1) {
51+
curr = curr.next;
52+
i++;
53+
}
54+
Node<E> newNode = new Node<>(item, curr.next);
55+
curr.next = newNode;
56+
}
57+
size++;
58+
return true;
3859
}
3960

4061
@Override
@@ -79,7 +100,9 @@ public E getLast() {
79100

80101
@Override
81102
public E remove() {
82-
return null;
103+
E item = head.item;
104+
head = head.next;
105+
return item;
83106
}
84107

85108
@Override

0 commit comments

Comments
 (0)