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

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

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

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

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

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, цикл припинить виведення вмісту вузлів, і функція завершиться.

Завдання

Swipe to start coding

Реалізація простої однозв'язної спискової структури з динамічним виділенням пам’яті. Завдання полягає у завершенні функцій 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.

Рішення

Все було зрозуміло?

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

close

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

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

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

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

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

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, цикл припинить виведення вмісту вузлів, і функція завершиться.

Завдання

Swipe to start coding

Реалізація простої однозв'язної спискової структури з динамічним виділенням пам’яті. Завдання полягає у завершенні функцій 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

some-alt