במטלה זו יש לממש מערכת המאפשרת ייצוג של גרף מכוון ושאינו מכוון, כולל מימוש של אלגוריתמים גרפיים קלאסיים ומבני נתונים תומכים.
Graph.cpp / Graph.h– מימוש מבנה הגרף באמצעות מטריצת שכנות או רשימות שכנות.Edge.cpp / Edge.h– מימוש קשתות כולל משקל.Algorithms.cpp / Algorithms.h– מימוש האלגוריתמים:BFS– חיפוש לרוחבDFS– חיפוש לעומקDijkstra– מציאת מסלול קצר ביותר מוורטקס אחד לאחריםPrim– מציאת עץ פורש מינימלי (MST)Kruskal– מציאת MST באמצעות איחוד-חיפוש (Union-Find)
Queue.cpp / Queue.h– מימוש תור פשוט.Stack.cpp / Stack.h– מימוש מחסנית.MinHeap.cpp / MinHeap.h– ערימת מינימום עבור Dijkstra ו-Prim.UnionFind.cpp / UnionFind.h– מבנה נתונים Union-Find עבור Kruskal.Main.cpp– תוכנית ראשית לבדיקת הפונקציונליות של המערכת.
- מימוש גרף גנרי – תמיכה בקשתות עם משקלים, גרף מכוון ובלתי מכוון.
- מימוש מלא של האלגוריתמים:
- כל אלגוריתם מחזיר גרף חדש (עץ / מסלול קצר).
- שימוש במבני נתונים מותאמים לכל אלגוריתם.
- שימוש יעיל בזיכרון – מחיקת הקצאות דינמיות (
delete[], destructors). - תכנון מבוסס מודולריות – הפרדת קבצים לפי תפקיד (class לכל קובץ).
- מימוש מבני נתונים עצמאיים – אין שימוש ב־STL (כמו
std::vector,std::queue, וכו'). - Makefile – קובץ לבניית הפרויקט אוטומטית (
make,make clean).
make main # מקמפלים את הקבצים
./program # מריצים את התוכנית הראשית
make clean # מנקים קבצים זמניים
make valgrind #מבצע בדיקת זליגת זכרון