#include #include"../Seminar04/linked-list-utils.h" #include using ListNode = LinkedListNode>; // O(k*n) памет, където n е дължината на списъка а k размера на най - големия стек // O(k*n) време void equalize(ListNode* ll) { std::stack temp; ListNode* iter = ll; while(iter) { while(!iter->data.empty()) { temp.push(iter->data.top()); iter->data.pop(); } iter = iter->next; } iter = ll; while(!temp.empty()) { if(iter == nullptr) { iter = ll; } iter->data.push(temp.top()); temp.pop(); iter = iter->next; } } void printStack(std::stack s) { int size = s.size(); std::cout << "["; while (!s.empty()) { std::cout << s.top() << " "; s.pop(); } std::cout << "] -> " << size << std::endl; } int main() { ListNode* ll = fromList( { std::stack({1, 4}), std::stack({6, 7, 8, 9, 5}), std::stack({10, 11, 12}), std::stack({1, 41}), std::stack({6, 7, 8, 9, 5, 7, 9, 0, 10, 20, 30}) } ); equalize(ll); printLinkedList(ll, printStack); freeList(ll); }