Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Додавання елементів | Реалізація структур даних
Структури в C
Секція 5. Розділ 3
single

single

Додавання елементів

Свайпніть щоб показати меню

Щоб зробити ваш однозв'язний список корисним, потрібно додавати до нього вузли. Ви реалізуєте логіку вставки вузлів у список. Ви створюватимете нові вузли, з'єднуватимете їх і інтегруватимете так, щоб список динамічно розширювався під час додавання елементів.

Такий практичний підхід допомагає зрозуміти, що саме відбувається «за лаштунками».

Реалізація вставки вузла

Напишемо просту функцію для створення вузла. Ця функція повинна:

  • Приймати як аргумент число типу int, яке буде збережено у полі data вузла;
  • Створювати вказівник на динамічно виділену область пам'яті (з урахуванням розміру вузла);
  • Перевіряти успішність виділення пам'яті для вузла;
  • Записувати потрібне значення (аргумент функції) у поле data;
  • Вказівник next має бути NULL, оскільки функція створює лише один вузол;
  • Функція повинна повертати вказівник на область пам'яті, де зберігається значення.

Функція AddNewNode() приймає вказівник на вказівник, оскільки вона може змінювати значення вказівника на перший (head) вузол списку, а також значення, яке буде збережено у новому вузлі:

void AddNewNode(struct Node** head, int value) 
{
	...
}

Якщо список порожній (*head == NULL), ми просто оновлюємо вказівник на голову списку (*head), щоб він вказував на новий вузол (newNode), у цьому випадку newNode стане першим вузлом (головним вузлом). У випадку непорожнього списку ми використовуємо цикл для пошуку останнього вузла.

Поточний вузол виконує роль буферного вузла, за його допомогою можна пройтись по списку та знайти вузол, який не вказує ні на що (*next == NULL).

struct Node* current = *head;

while (current->next != NULL) 
{
    ...
}

Після цього потрібно зробити новий вузол newNode останнім у списку, тобто current->next має дорівнювати newNode. Тепер newNode є останнім вузлом у списку.

Завдання: визначити та додати функцію для додавання нових вузлів до існуючих.

Завдання

Проведіть, щоб почати кодувати

Створення функції addNewNode, яка додає новий вузол у кінець однозв'язного списку.

Усередині функції:

  1. Оголосити змінну struct Node* newNode і створити новий вузол за допомогою createNode(value).
  2. Перевірити, чи список порожній, використовуючи умову *head == NULL.
  3. Якщо список порожній, присвоїти newNode до *head.
  4. Якщо список не порожній, оголосити struct Node* current і присвоїти йому значення *head.
  5. Переміщатися по списку за допомогою циклу while, поки current->next не стане NULL.
  6. Після досягнення останнього вузла встановити current->next = newNode.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 3
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt