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

single

Обхід і відображення зв'язаного списку

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

Після того як ми навчилися створювати та з'єднувати вузли, потрібно перевірити, чи правильно працює такий список!

Для цього напишемо просту функцію, яка виведе весь список.

Функція прийматиме вказівник на область пам'яті, де зберігається голова (перший) вузол списку.

void printList(struct Node* head) {}

Після цього буде створено тимчасовий вузол current, за допомогою якого ми пройдемося по всьому списку. Вміст поточного вузла буде дорівнювати вмісту поточного вузла списку.

struct Node* current = head;

Для проходження по списку використовується цикл while(){} з необхідною умовою, а саме — до тих пір, поки не буде знайдено вузол, у якого поле next дорівнює NULL.

Note
Примітка

temp (тимчасовий) вузол виконує роль буферного вузла. Він потрібен для тимчасового зберігання (та видалення) вмісту поточного вузла. Якщо одразу очистити поточний вузол, буде втрачено зв'язок із наступним вузлом, а отже, доступ до списку буде втрачено.

while (current != NULL) { }
printf("\n");

Усередині циклу будемо виводити вміст поля data поточного вузла та змінювати поле next для переходу до наступного вузла.

printf("%d ", current->data);
current = current->next;

Як тільки буде знайдено вузол, у якого поле next дорівнює NULL, цикл припинить виведення вмісту вузлів, і функція завершиться.

Завдання

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

Реалізувати просту однозв’язну структуру даних з динамічним виділенням пам’яті. Завдання — завершити функції printList та freeList.

  1. Реалізувати функцію printList з єдиним параметром struct Node* head.

    • Усередині printList оголосити змінну current та ініціалізувати її значенням head.
    • Використати цикл while, що виконується доти, поки current не дорівнює NULL.
    • У кожній ітерації виводити поле data вузла current та переходити до наступного, оновлюючи current.
    • Після завершення циклу вивести символ нового рядка для відокремлення виводу.
  2. Усередині freeList оголосити змінну current та ініціалізувати її значенням head.

    • Використати цикл while доти, поки current не дорівнює NULL.
    • Усередині циклу зберегти current у тимчасову змінну temp.
    • Оновити current, перейшовши до наступного вузла.
    • Звільнити пам’ять, виділену для temp.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt