Обхід і Відображення Зв'язаного Списку
Після того як ми навчилися створювати та з'єднувати вузли, необхідно перевірити, чи правильно працює такий список!
Для цього напишемо просту функцію, яка виведе весь список.
Функція прийматиме вказівник на область пам'яті, де зберігається голова (перший) вузол списку.
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, цикл припинить виведення вмісту вузлів, і функція завершиться.
Swipe to start coding
Реалізація простої однозв'язної спискової структури з динамічним виділенням пам’яті. Завдання полягає у завершенні функцій 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
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 4.35
Обхід і Відображення Зв'язаного Списку
Свайпніть щоб показати меню
Після того як ми навчилися створювати та з'єднувати вузли, необхідно перевірити, чи правильно працює такий список!
Для цього напишемо просту функцію, яка виведе весь список.
Функція прийматиме вказівник на область пам'яті, де зберігається голова (перший) вузол списку.
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, цикл припинить виведення вмісту вузлів, і функція завершиться.
Swipe to start coding
Реалізація простої однозв'язної спискової структури з динамічним виділенням пам’яті. Завдання полягає у завершенні функцій 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