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

Commit c5687fc

Browse files
author
Ram swaroop
committed
liknkedlist operations done but not tested
1 parent 81887c5 commit c5687fc

File tree

2 files changed

+97
-16
lines changed

2 files changed

+97
-16
lines changed

src/me/ramswaroop/Main.java

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,33 +100,56 @@ public static void main(String[] args) {
100100
out.println("1. Add");
101101
out.println("2. Add at index");
102102
out.println("3. Remove");
103-
out.println("4. Print");
104-
out.println("5. Exit module");
103+
out.println("4. Remove at index");
104+
out.println("5. Remove item");
105+
out.println("6. Edit item");
106+
out.println("7. Print");
107+
out.println("8. Exit module");
105108
k2 = Integer.parseInt(in.nextLine());
106-
int input, index;
109+
int item, index;
107110
switch (k2) {
108111
case 1:
109112
out.println("Enter value:");
110-
input = Integer.parseInt(in.nextLine());
111-
singleLinkedList.add(input);
113+
item = Integer.parseInt(in.nextLine());
114+
singleLinkedList.add(item);
112115
singleLinkedList.printList();
113116
break;
114117
case 2:
115118
out.println("Enter value:");
116-
input = Integer.parseInt(in.nextLine());
119+
item = Integer.parseInt(in.nextLine());
117120
out.println("Enter index:");
118121
index = Integer.parseInt(in.nextLine());
119-
singleLinkedList.add(index, input);
122+
singleLinkedList.add(index, item);
120123
singleLinkedList.printList();
121124
break;
122125
case 3:
123126
out.println("Removed element: " + singleLinkedList.remove());
124127
singleLinkedList.printList();
125128
break;
126129
case 4:
130+
out.println("Enter index:");
131+
index = Integer.parseInt(in.nextLine());
132+
out.println("Removed element: " + singleLinkedList.remove(index));
127133
singleLinkedList.printList();
128134
break;
129135
case 5:
136+
out.println("Enter value:");
137+
item = Integer.parseInt(in.nextLine());
138+
out.println("Removed: " + singleLinkedList.remove(item));
139+
singleLinkedList.printList();
140+
break;
141+
case 6:
142+
out.println("Enter index to edit:");
143+
index = Integer.parseInt(in.nextLine());
144+
out.println("Enter new value:");
145+
item = Integer.parseInt(in.nextLine());
146+
singleLinkedList.set(index, item);
147+
singleLinkedList.printList();
148+
break;
149+
case 7:
150+
singleLinkedList.printList();
151+
break;
152+
case 8:
130153
continue chooseModule;
131154
default:
132155
out.println("Wrong choice!");

src/me/ramswaroop/linkedlists/SingleLinkedList.java

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public LinkedList<E> clone() {
7373

7474
@Override
7575
public boolean contains(E item) {
76-
return false;
76+
return getNode(item) == null;
7777
}
7878

7979
@Override
@@ -83,6 +83,7 @@ public E get(int index) {
8383

8484
@Override
8585
public E getFirst() {
86+
isLinkedListEmpty();
8687
return head.item;
8788
}
8889

@@ -97,27 +98,41 @@ public E remove() {
9798

9899
E item = head.item;
99100
head = head.next;
101+
size--;
100102
return item;
101103
}
102104

103105
@Override
104106
public E remove(int index) {
105-
isIndexOutOfBounds(index);
106-
107107
Node<E> prevNode = getPredecessorNode(index);
108-
prevNode.next = prevNode.next.next;
109-
return prevNode.next.item;
108+
if (prevNode == null) { // index = 0
109+
head = head.next;
110+
size--;
111+
return head.item;
112+
} else {
113+
prevNode.next = prevNode.next.next;
114+
size--;
115+
return prevNode.next.item;
116+
}
110117
}
111118

112119
@Override
113120
public boolean remove(E item) {
114-
return false;
121+
if (!contains(item)) return false;
122+
123+
Node<E> prevNode = getPredecessorNode(item);
124+
if (prevNode == null) { // index = 0
125+
head = head.next;
126+
size--;
127+
} else {
128+
prevNode.next = prevNode.next.next;
129+
size--;
130+
}
131+
return true;
115132
}
116133

117134
@Override
118135
public E set(int index, E item) {
119-
isIndexOutOfBounds(index);
120-
121136
Node<E> node = getNode(index);
122137
node.item = item;
123138
return node.item;
@@ -152,7 +167,30 @@ private Node<E> getPredecessorNode(int index) {
152167
curr = curr.next;
153168
i++;
154169
}
155-
return curr;
170+
return (index == 0) ? null : curr;
171+
}
172+
173+
private Node<E> getPredecessorNode(E item) {
174+
Node<E> prev = null;
175+
Node<E> curr = head;
176+
if (item == null) {
177+
while (curr != null) {
178+
if (curr.item == item) { // when item is null, use == rather than equals()
179+
return prev;
180+
}
181+
prev = curr;
182+
curr = curr.next;
183+
}
184+
} else {
185+
while (curr != null) {
186+
if (curr.item.equals(item)) {
187+
return prev;
188+
}
189+
prev = curr;
190+
curr = curr.next;
191+
}
192+
}
193+
return null;
156194
}
157195

158196
private Node<E> getNode(int index) {
@@ -167,6 +205,26 @@ private Node<E> getNode(int index) {
167205
return curr;
168206
}
169207

208+
private Node<E> getNode(E item) {
209+
Node<E> curr = head;
210+
if (item == null) {
211+
while (curr != null) { // when item is null, use == rather than equals()
212+
if (curr.item == item) {
213+
return curr;
214+
}
215+
curr = curr.next;
216+
}
217+
} else {
218+
while (curr != null) {
219+
if (curr.item.equals(item)) {
220+
return curr;
221+
}
222+
curr = curr.next;
223+
}
224+
}
225+
return null;
226+
}
227+
170228
private void isLinkedListEmpty() {
171229
if (head == null) {
172230
throw new NoSuchElementException("LinkedList empty");

0 commit comments

Comments
 (0)