Website Summary Files Commits Branches @commit @diff @stats
path: root / Additional / equalize.cpp
diff options
context:
space:
mode:
Commit8c1753a1a200cbe0c23c2178a35e1b8b8c57bf64 (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-11-22 23:57:23 +0200
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-11-22 23:57:23 +0200
Files5ccc337050428a14c1ff73f5443d32031bbb1f38 /Additional/equalize.cpp
Data-structures-and-algorithms-8c1753a1a200cbe0c23c2178a35e1b8b8c57bf64.tar
Data-structures-and-algorithms-8c1753a1a200cbe0c23c2178a35e1b8b8c57bf64.tar.gz
Data-structures-and-algorithms-8c1753a1a200cbe0c23c2178a35e1b8b8c57bf64.zip
Parent74f5fe6f7c4222fc52479c6ef598f830f6049949 (diff)
Add additional
1 files changed, 60 insertions, 0 deletions
-rw-r--r--Additional/equalize.cpp60
diff --git a/Additional/equalize.cpp b/Additional/equalize.cpp
new file mode 100644
index 0000000..263ccd2
--- /dev/null
+++ b/Additional/equalize.cpp
@@ -0,0 +1,60 @@
+#include<iostream>
+#include"../Seminar04/linked-list-utils.h"
+#include<stack>
+
+using ListNode = LinkedListNode<std::stack<int>>;
+
+// O(k*n) памет, където n е дължината на списъка а k размера на най - големия стек
+// O(k*n) време
+void equalize(ListNode* ll) {
+ std::stack<int> 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<int> 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<int>({1, 4}),
+ std::stack<int>({6, 7, 8, 9, 5}),
+ std::stack<int>({10, 11, 12}),
+ std::stack<int>({1, 41}),
+ std::stack<int>({6, 7, 8, 9, 5, 7, 9, 0, 10, 20, 30})
+ }
+ );
+
+ equalize(ll);
+ printLinkedList(ll, printStack);
+ freeList(ll);
+} \ No newline at end of file