Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите срочно java!!!!!

Вова Долгополов Ученик (98), на голосовании 1 год назад
С помощью односвязного списка напишите реализацию LinkedList.
У пользователя должны быть доступны методы добавления, вставки и удаления из списка элементов.
Условия:
- Нельзя использовать шаблоны(готовый LinkedList, методы для работы с ним)
Голосование за лучший ответ
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 возвращает данные узла по указанному индексу.
Похожие вопросы