Pandusha, temel veri yapıları ve algoritmaları öğrenmek için hazırlanmış küçük bir Python kütüphanesidir. v0.2 ile mevcut yapılar sağlamlaştırıldı, testler eklendi ve roadmap'teki çekirdek DSA başlıkları uygulandı.
Uygun veri yapılarında şu yardımcılar bulunur:
len(obj)→ eleman sayısılist(obj)→ değerleri liste olarak dolaşmarepr(obj)→ okunabilir temsilis_empty()→ boş mu kontrolüto_list()→ değerleri Python listesine çevirme
Dosya: src/pandusha/linked_list.py
Tek yönlü bağlı liste. Ekleme, silme, index ile erişim ve eğitim amaçlı ek problemleri kapsar.
Öne çıkan metotlar:
append(value),prepend(value),insert(value, index)remove_last(),remove_first(),remove(index)get(index),set(value, index),set_value(index, value)reverse(),partition_list(x),reverse_between(m, n),swap_pairs()find_middle_node(),find_kth_from_end(k),remove_duplicates(),binary_to_decimal()
Dosya: src/pandusha/doubly_linked_list.py
Çift yönlü bağlı liste. prev ve next bağlantılarını koruyarak baştan ve
sondan işlem yapmayı destekler.
Öne çıkan metotlar:
append(value),prepend(value),insert(index, value)remove_last(),remove_first(),remove(index)get(index),set(index, value),set_value(index, value)reverse(),partition_list(x),reverse_between(start, end),swap_pairs()is_palindrome()
Dosyalar: src/pandusha/stack.py, src/pandusha/queue.py
Stack: LIFO yapısı.push(value),pop(),print_stack().Queue: FIFO yapısı.enqueue(value),dequeue(),print_queue().
İkisi de boş başlatmayı, len(), list(), is_empty() ve to_list() yardımcılarını destekler.
Dosyalar: src/pandusha/binary_search_tree.py, src/pandusha/avl_tree.py
BinarySearchTree:insert(value),contains(value),in_order(),pre_order(),post_order(),level_order(),min_value(),max_value(),height().AVLTree: dengeli arama ağacı.insert(value),contains(value),in_order(),height().
Dosya: src/pandusha/graph.py
Yönlü veya yönsüz graph oluşturabilir:
from pandusha import Graph
graph = Graph(directed=True)Metotlar:
add_vertex(vertex),add_edge(v1, v2, weight=1)remove_edge(v1, v2),remove_vertex(vertex)bfs(start),dfs(start)shortest_path_unweighted(start, end)dijkstra(start),shortest_path(start, end)topological_sort()
Dosyalar: heap.py, hash_table.py, trie.py, disjoint_set.py
MinHeap,MaxHeap:insert(value),remove(),peek().PriorityQueue:enqueue(value, priority),dequeue(),peek().HashTable: separate chaining.set(key, value),get(key),delete(key),keys(),values(),items().Trie:insert(word),search(word),starts_with(prefix),delete(word).DisjointSet:make_set(item),find(item),union(a, b),connected(a, b).
Dosyalar: src/pandusha/sorting.py, src/pandusha/searching.py
Sorting fonksiyonları input listesini değiştirmez, yeni sıralı liste döndürür:
bubble_sort(values)selection_sort(values)insertion_sort(values)merge_sort(values)quick_sort(values)heap_sort(values)
Searching fonksiyonları index döndürür; bulunamazsa -1 döndürür:
linear_search(values, target)binary_search(values, target)jump_search(values, target)
Dosya: src/pandusha/dynamic_programming.py
fibonacci_memo(n)fibonacci_tabulation(n)climbing_stairs(n)coin_change_min(coins, amount)
Temel doğrulama komutları:
python3 -m pytest -q
python3 -m compileall src testsTestler public export'ları, README örneğini, veri yapısı invariantlarını, algoritma sonuçlarını ve edge-case davranışlarını kapsar.