Обратный связанный список в группах заданного размера с использованием стека
Для заданного связанного списка напишите функцию, которая обращает все k узлов (где k — входные данные функции).
Примеры:
Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3 Output: 3->2->1->6->5->4->8->7->NULL. Inputs: 1->2->3->4->5->6->7->8->NULL and k = 5 Output: 5->4->3->2->1->8->7->6->NULL.
Мы уже обсуждали его решение в посте ниже
Развернуть связанный список в группах заданного размера | Набор 1
В этом посте мы использовали стек, в котором будут храниться узлы данного связанного списка. Во-первых, поместите k элементов связанного списка в стек. Теперь извлекайте элементы один за другим и следите за ранее извлеченным узлом. Направьте следующий указатель предыдущего узла на верхний элемент стека. Повторяйте этот процесс, пока не будет достигнуто значение NULL.
Этот алгоритм использует O(k) дополнительного пространства.
Реализация:
Временная сложность: O(N) , так как мы используем цикл для прохождения N раз. Где N — количество узлов в связанном списке.
Вспомогательное пространство: O(k) , так как мы используем дополнительное пространство для стека.
Эта статья предоставлена Jatin Goyal . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам.