Professional Professional
Мудрец
(15955)
1 год назад
Конечно, вот пример реализации односвязного списка на Java:
```
public class LinkedList {
private Node head;
private int size;
private class Node {
Object data;
Node next;
Node(Object data) {
this.data = data;
this.next = null;
}
}
public LinkedList() {
head = null;
size = 0;
}
public void add(Object data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
size++;
}
public void insert(Object data, int index) {
if (index < 0 || index > size) {
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(data);
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 remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
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 int size() {
return size;
}
public Object get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
Node current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
return current.data;
}
}
```
В этой реализации есть класс Node, который представляет узел списка. Узел содержит данные и ссылку на следующий узел. Класс LinkedList содержит ссылку на головной узел списка и размер списка. Метод add добавляет новый узел в конец списка, метод insert вставляет новый узел в указанную позицию, а метод remove удаляет узел из указанной позиции. Метод size возвращает размер списка, а метод get возвращает данные узла по указанному индексу.
У пользователя должны быть доступны методы добавления, вставки и удаления из списка элементов.
Условия:
- Нельзя использовать шаблоны(готовый LinkedList, методы для работы с ним)