И нет, это неправильный путь .
См. Википедия: Связанный список - это структура данных, к которой призывает это назначение.Каждая ячейка имеет значение и «указатель» на следующую (и, возможно, предыдущую).
Не использовать массивы - структура списка автономна в ячейках и ссылках.
Рассмотрите эту подпись, чтобы добавить новый элемент: (Как только базовая операция понята / реализована, ее можно легко превратить в метод.)
static LinkedList insert(LinkedList item, LinkedList newItem) {
// Update item to "point to" newItem and have newItem "point to" where
// item used to "point to". Return the new "head" of this
// segment.
// Notes:
// `item` may be null to "insert at start of empty list"
// This function should be *static* and should only modify
// item and newItem.
}
Примеры использования:
LinkedList head = insert(null, new LinkedList("a"));
insert(head, new LinkedList("b"));
length(head); // should be 2, cons cells should look like `("a", ("b", null))`
insert(head, new LinkedList("c"));
length(head); // should be 3, cons cells should look like `("a", ("c", ("b", null)))`
Помните, что объект LinkedList
выше относится к одной «ячейке» с двумя (или тремя) членами: «значение», «следующий» (и, необязательно, «предыдущий»).В зависимости от предпочтений и т. Д. Node
или Cell
может быть более подходящим именем, чтобы оставить LinkedList
для обозначения стандартной коллекции и / или внешнего контейнера.
Удачная домашняя работа.
Примечание: LinkedList
в API коллекции Java - это контейнер, который использует связанный список в качестве базовой реализации.Как таковой, он упускает из числа хороших вариантов использования связанных списков, часто используемых в языках программирования с функциональным заголовком.