single
Обхід і відображення зв'язаного списку
Свайпніть щоб показати меню
Після того як ми навчилися створювати та з'єднувати вузли, потрібно перевірити, чи правильно працює такий список!
Для цього напишемо просту функцію, яка виведе весь список.
Функція прийматиме вказівник на область пам'яті, де зберігається голова (перший) вузол списку.
void printList(struct Node* head) {}
Після цього буде створено тимчасовий вузол current, за допомогою якого ми пройдемося по всьому списку. Вміст поточного вузла буде дорівнювати вмісту поточного вузла списку.
struct Node* current = head;
Для проходження по списку використовується цикл while(){} з необхідною умовою, а саме — до тих пір, поки не буде знайдено вузол, у якого поле next дорівнює NULL.
temp (тимчасовий) вузол виконує роль буферного вузла. Він потрібен для тимчасового зберігання (та видалення) вмісту поточного вузла. Якщо одразу очистити поточний вузол, буде втрачено зв'язок із наступним вузлом, а отже, доступ до списку буде втрачено.
while (current != NULL) { }
printf("\n");
Усередині циклу будемо виводити вміст поля data поточного вузла та змінювати поле next для переходу до наступного вузла.
printf("%d ", current->data);
current = current->next;
Як тільки буде знайдено вузол, у якого поле next дорівнює NULL, цикл припинить виведення вмісту вузлів, і функція завершиться.
Проведіть, щоб почати кодувати
Реалізувати просту однозв’язну структуру даних з динамічним виділенням пам’яті. Завдання — завершити функції printList та freeList.
-
Реалізувати функцію
printListз єдиним параметромstruct Node* head.- Усередині
printListоголосити зміннуcurrentта ініціалізувати її значеннямhead. - Використати цикл
while, що виконується доти, покиcurrentне дорівнюєNULL. - У кожній ітерації виводити поле
dataвузлаcurrentта переходити до наступного, оновлюючиcurrent. - Після завершення циклу вивести символ нового рядка для відокремлення виводу.
- Усередині
-
Усередині
freeListоголосити зміннуcurrentта ініціалізувати її значеннямhead.- Використати цикл
whileдоти, покиcurrentне дорівнюєNULL. - Усередині циклу зберегти
currentу тимчасову зміннуtemp. - Оновити
current, перейшовши до наступного вузла. - Звільнити пам’ять, виділену для
temp.
- Використати цикл
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат