Skip to content

yoavnach/Ex1Graph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

מטלה: מימוש גרף ואלגוריתמים גרפיים – תכנות מערכות 2

🧩 תיאור המטלה

במטלה זו יש לממש מערכת המאפשרת ייצוג של גרף מכוון ושאינו מכוון, כולל מימוש של אלגוריתמים גרפיים קלאסיים ומבני נתונים תומכים.


📁 מבנה הפרויקט

  • 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 – תוכנית ראשית לבדיקת הפונקציונליות של המערכת.

🧠 דרישות עיקריות

  1. מימוש גרף גנרי – תמיכה בקשתות עם משקלים, גרף מכוון ובלתי מכוון.
  2. מימוש מלא של האלגוריתמים:
    • כל אלגוריתם מחזיר גרף חדש (עץ / מסלול קצר).
    • שימוש במבני נתונים מותאמים לכל אלגוריתם.
  3. שימוש יעיל בזיכרון – מחיקת הקצאות דינמיות (delete[], destructors).
  4. תכנון מבוסס מודולריות – הפרדת קבצים לפי תפקיד (class לכל קובץ).
  5. מימוש מבני נתונים עצמאיים – אין שימוש ב־STL (כמו std::vector, std::queue, וכו').
  6. Makefile – קובץ לבניית הפרויקט אוטומטית (make, make clean).

🛠️ איך לקמפל ולהריץ

make main         # מקמפלים את הקבצים
./program    # מריצים את התוכנית הראשית
make clean   # מנקים קבצים זמניים
make valgrind #מבצע בדיקת זליגת זכרון

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors