Я реализую циклическую структуру данных DoublyLinkedList.Как и в односвязном списке, узлы в двусвязном списке имеют ссылку на следующий узел, но в отличие от односвязного списка, узлы в двусвязном списке также имеют ссылку на предыдущий узел.
Дополнительно,поскольку список является циклическим, ссылка «следующий» в последнем узле в списке указывает на первый узел в списке, а ссылка «предыдущая» в первом узле в списке указывает на последний узел в списке.
Мне нужна помощь при запуске метода get, я искал вокруг и не мог найти ничего, что могло бы мне помочь, так как я работаю с Generic Type.Мне нужно вернуть E, и все остальные примеры показывают мне это с int в качестве примера.Вот мой код:
public class DoublyLinkedList<E>
{
private Node first;
private int size;
@SuppressWarnings("unchecked")
public void add(E value)
{
if (first == null)
{
first = new Node(value, null, null);
first.next = first;
first.prev = first;
}
else
{
first.prev.next = new Node(value, first, first.prev);
first.prev = first.prev.next;
}
size++;
}
private class Node<E>
{
private E data;
private Node next;
private Node prev;
public Node(E data, Node next, Node prev)
{
this.data = data;
this.next = next;
this.prev = prev;
}
}
@SuppressWarnings("unchecked")
public void add(int index, E value)
{
if (first.data == null)
{
throw new IndexOutOfBoundsException();
} else if (index == 0)
{
first = new Node(value, first.next, first.prev);
}
else
{
Node current = first;
for (int i = 0; i < index - 1; i++)
{
current = current.next;
}
current.next = new Node(value, current.next, current.prev);
}
}
@SuppressWarnings("unchecked")
public void remove(int index)
{
if (first.data == null)
{
throw new IndexOutOfBoundsException();
}
else if (index == 0)
{
first = first.next;
}
else
{
Node current = first.next;
for (int i = 0; i < index - 1; i++)
{
current = current.next;
}
current.next = current.next.next;
}
size--;
}
Я не могу придумать, как начать с этого, но в основном этот метод должен возвращать элемент с указанным индексом в списке.Если параметр index недействителен, должно быть сгенерировано исключение IndexOutOfBoundsException.
public E get(int index)
{
}
Кроме того, мой метод удаления не точный, но я сам его выясню, мне просто нужна помощь с моим методом get,