Skip to content

Latest commit

 

History

History
132 lines (88 loc) · 4.07 KB

File metadata and controls

132 lines (88 loc) · 4.07 KB

Pandusha Documentation

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ı.

Ortak Yardımcılar

Uygun veri yapılarında şu yardımcılar bulunur:

  • len(obj) → eleman sayısı
  • list(obj) → değerleri liste olarak dolaşma
  • repr(obj) → okunabilir temsil
  • is_empty() → boş mu kontrolü
  • to_list() → değerleri Python listesine çevirme

LinkedList

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()

DoublyLinkedList

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()

Stack ve Queue

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.

BinarySearchTree ve AVLTree

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().

Graph

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()

Heap, HashTable, Trie, DisjointSet

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).

Sorting ve Searching

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)

Dynamic Programming

Dosya: src/pandusha/dynamic_programming.py

  • fibonacci_memo(n)
  • fibonacci_tabulation(n)
  • climbing_stairs(n)
  • coin_change_min(coins, amount)

Testler

Temel doğrulama komutları:

python3 -m pytest -q
python3 -m compileall src tests

Testler public export'ları, README örneğini, veri yapısı invariantlarını, algoritma sonuçlarını ve edge-case davranışlarını kapsar.