BRUH
unknown
plain_text
2 years ago
2.8 kB
4
Indexable
import java.util.NoSuchElementException;
public class MyLinkedList implements MyList {
private Node head;
private int size;
public void addToEnd(Object obj) {
Node newNode = new Node(obj);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
size++;
}
public void insertAt(int index, Object obj) {
if (index < 0 || index > size) {
throw new NoSuchElementException("Index: " + index + ", Size: " + size);
}
Node newNode = new Node(obj);
if (index == 0) {
newNode.next = head;
head = newNode;
} else {
Node current = head;
for (int i = 0; i < index - 1; i++) {
current = current.next;
}
newNode.next = current.next;
current.next = newNode;
}
size++;
}
public void removeAt(int index) {
if (index < 0 || index >= size) {
throw new NoSuchElementException("Index: " + index + ", Size: " + size);
}
if (index == 0) {
head = head.next;
} else {
Node current = head;
for (int i = 0; i < index - 1; i++) {
current = current.next;
}
current.next = current.next.next;
}
size--;
}
public Object getAt(int index) {
if (index < 0 || index >= size) {
throw new NoSuchElementException("Index: " + index + ", Size: " + size);
}
Node current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
return current.data;
}
public int getSize() {
return size;
}
public MyListIterator getIterator() {
return new LinkedListIterator();
}
private class Node {
private Object data;
private Node next;
public Node(Object data) {
this.data = data;
this.next = null;
}
}
private class LinkedListIterator implements MyListIterator {
private Node current;
public LinkedListIterator() {
current = head;
}
public boolean hasNext() {
return current != null;
}
public Object next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
Object data = current.data;
current = current.next;
return data;
}
}
}
Editor is loading...