Skip to content

0xQ71/MyCustomList_Array_and_Linked

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 MyCustom Collections in Java

Проект содержит две собственные реализации коллекций на Java:
MyCustomArrayList (динамический массив с авто-сортировкой) и MyCustomLinkedList (двусвязный список).


📦 MyCustomArrayList

✨ Особенности

  • 📈 Динамический массив Comparable[] с автоматическим расширением.
  • ➕ Добавление элементов в конец и по индексу.
  • 🔹 Получение и удаление элементов по индексу.
  • 🔍 Поиск индекса элемента (indexOf).
  • 🛠️ Авто-сортировка после добавления.
  • 🖥️ Интерактивное консольное меню с обработкой ошибок ввода.

📝 Пример работы с "анимацией"

Добавление элементов: Пустой список: [] Добавляем: apple [ apple ] Добавляем: orange [ apple, orange ] Добавляем: banana (авто-сортировка) [ apple, banana, orange ]

Удаление по индексу 1: Список: [ apple, banana, orange ] Удаляем индекс 1 [ apple, orange ]

Поиск элемента "orange": Список: [ apple, orange ] Элемент найден на позиции 1


🔗 MyCustomLinkedList

✨ Особенности

  • 🧩 Двусвязный список с Node (prev/next).
  • ➕ Добавление элементов в начало, конец и по индексу.
  • 🔹 Получение и удаление элементов по индексу.
  • ✅ Проверка на пустоту (isEmpty) и размер (size).
  • 🖥️ Интерактивное меню с безопасным вводом.

📝 Пошаговая визуализация изменений

Пустой список: [start] <-> [end]

Добавление в конец: Добавляем: hello [start] <-> hello <-> [end] Добавляем: world [start] <-> hello <-> world <-> [end]

Добавление в начало: Добавляем: start [start] <-> start <-> hello <-> world <-> [end]

Удаление по индексу: Удаляем индекс 1 (hello) [start] <-> start <-> world <-> [end]

Получение по индексу 1: Элемент: world Список: [start] <-> start <-> world <-> [end]

Вставка по индексу 1 ("middle"): Вставляем "middle" на индекс 1 [start] <-> start <-> middle <-> world <-> [end]

🔗 Структура узла (Node)

null <- [prev] Node(data) [next] -> null

Каждый узел хранит:

  • data — значение узла
  • prev — ссылка на предыдущий узел
  • next — ссылка на следующий узел

🛠️ Использование

  1. Скопировать файлы MyCustomArrayList.java и MyCustomLinkedList.java.
  2. Скомпилировать:
javac MyCustomArrayList.java
javac MyCustomLinkedList.java
  1. Запустить:
java MyCustomArrayList
  1. Или
java MyCustomLinkedList
  1. Следовать меню для добавления, удаления, просмотра и поиска элементов.

🎨 Визуализация:

  • 🔹 ArrayList: быстрый доступ по индексу, авторасширение массива, элементы в смежной памяти.

  • 🔗 LinkedList: удобная вставка/удаление в середине, каждая нода хранит ссылки на соседей.

  • 🖼️ ASCII-анимация в примерах показывает, как изменяется структура после каждой операции.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages