תירגול 14: מבני נתונים דינאמיים

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
עצים ועצי חיפוש חומר קריאה לשיעור זה Chapter 5.5– Trees (91 – 97)
תכנות תרגול 11 שבוע : מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
העץ הנדיב מילים 1-10 פעם / אוסף / עלים / כתרים / יער / גזע / מתנדנד / ענפים / מחבואים / מתעיף /
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
- אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
Faster reliable phylogenetic analysis Article by: Vincent Berry & David Bryant Presented by: Leonid Shuman & Eva Frant.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 14 שבוע:
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 14 שבוע : רשימות מקושרות ישנו מבנה נתונים אשר מאפשר ישנו מבנה נתונים אשר מאפשר לנו לבצע את הוספת האיברים בצורה נוחה יותר. מבנה זה.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
Sorting II: הפרד ומשול. Last week: in-place sorting Bubble Sort – O(n 2 ) comparisons –O(n) best case comparisons, O(n 2 ) exchanges Selection Sort -
תכנות תרגול 12 שבוע : הקצאת זיכרון דינאמית הזיכרון המקסימאלי ששימש את התוכנית שלנו עד היום היה קבוע מראש. לפני הרצת התוכנית, לאחר שהתוכנית עברה.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
מבוא כללי למדעי המחשב רשימות מקושרות
1 ייצוג באמצעות עצים שונים מתוחכם רק לקבוצות גדולות (תקורה בפעולות ובתכנות!!!) עצי חיפוש בינאריים BINARY SEARCH TREES תחום סדור (> < =) תחום איברים גדול.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
Tirgul 13: Trees 1. הגדרות עץ – מודל מופשט של מבנה היררכי. עץ מורכב מאוסף של צמתים (קודקודים) עם יחס אבא-בן. שורש בעץ – צומת ללא אבא. בכל עץ יש בדיוק.
מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. אג'נדה שאלות מבחינות חזרה על מימוש stream אפשרי 2.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
תכנות בשפת C תרגול 15 תרגול חזרה 2 תרגילים ממבחנים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 12 שבוע : מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
מבנה מחשבים תרגול מספר 3. טענה על עצים משפט: בעץ שדרגת כל קודקודיו חסומה ב-3, מספר העלים ≤ מספר הקודקודים הפנימיים + 2. הוכחה: באינדוקציה על n, מספר הקודקודים.
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
מבוא מורחב למדעי המחשב בשפת Scheme תרגול 12. Outline Streams Infinite streams Stream implementation Questions from exams 2.
1 מבוא למדעי המחשב הרצאה 21: Queue, Iterator & Iterable.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
Dynamic Allocation. Malloc - Reminder void* malloc(unsigned int nBytes); Used to dynamically allocate nBytes in memory Returns a pointer to the allocated.
Programming Pointers. נדגים היום בעזרת מצביעים העברת משתנים לפונקציה שמשנה אותם  פונקציה שמקבלת מצביעים לסמן תא בזיכרון  פונקציה שמחזירה מצביע מערך.
אלגוריתמי חיפוש. Brute Force Module Module1 Function BruteForce(ByRef x() As Integer, ByRef item As Integer) As Integer Dim i As Integer For i = 0 To.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
מבני נתונים רשימה מקושרת, מחסנית ותור
Tirgul 12 Trees 1.
הרצאה 10 פונקציות עם מספר משתנה של פרמטרים
ערמות make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n n Binomial Heap Fibonacci Heap † Relaxed Heap Linked.
מבוא למדעי המחשב סיבוכיות.
הקצאות דינאמיות בשילוב מבנים
אינדקסינג והשינג (indexing & hashing)
מיונים וחיפושים קרן כליף.
תקשורת ומחשוב תרגול 1 IP, Classes and Masks.
הרצאה 06 רשימות מקושרות קרן כליף.
הרצאה 07 עצים קרן כליף.
מבני נתונים עצים קרן כליף.
Marina Kogan Sadetsky –
Engineering Programming A
שאלה 1.
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Presentation transcript:

תירגול 14: מבני נתונים דינאמיים

רשימה מקושרת

מהי רשימה מקושרת? רשימה מקושרת היא אחד ממבני הנתונים הדינמיים הבסיסיים וגם השימושיים ביותר. רשימה משורשרת היא סדרה של מבנים שלכל אחד מהם יש ערך ומצביע המצביע למבנה הבא. המבנה האחרון מצביע ל NULL.

קודקוד אחד typedef struct Node { int data; struct Node* next; } Node;

תרגיל כתבו פונקציה המקבלת כקלט רשימה מקושרת של int. הפונקציה מוחקת מהרשימה את הקודקוד הראשון. void deleteFirst(Node **h){ if(!*h) return; Node *p = *h; *h = p->next; free(p); }

תרגיל כתבו פונקציה המקבלת כקלט מצביע לראש רשימה וערך מסוים. הפונקציה מוסיפה בסוף הרשימה קודקוד חדש המכיל את הערך שהתקבל. Node* newNode(int data, Node *next) { Node *p = (Node*) malloc (sizeof(Node)); p->data = data; p->next = next; return p; } void insertLast(int data, struct Node **head) { struct Node **p = head; while(*p) p = &((*p)->next); *p = newNode(data,NULL); }

תרגיל כתבו פונקציה המקבלת כקלט רשימה מקושרת של int וערך מסוים. הפונקציה מוחקת מהרשימה את כל הקודקודים המכילים את הערך שהתקבל.

מבוא למדעי המחשב מ' - תרגול 7 תרגיל void deleteFromList(int data, Node** h) { if(! *h ) return; Node *p = *h; Node **prev = h; while(p) { if(p->data == data) { *prev = p->next; free(p); p = *prev; } else { prev = &(p->next); p = p->next; } מבוא למדעי המחשב מ' - תרגול 7

תרגיל כתבו פונקציה המקבלת כקלט רשימה מקושרת של int וערך מסוים. הפונקציה משכפלת ברשימה את כל הקודקודים המכילים את הערך שהתקבל. void duplicateData(int data, Node ** h) { while(*h) if( (*h)->data == data) { *h = newNode(data,*h); h = &( (*h)->next->next); } else h = &((*h)->next); }

עצים

מהם עצים דינאמיים? עץ הוא מבנה נתונים הבנוי מקודקודים כך שכל קודקוד מכיל ערך מסוים ומספר מצביעים לקודקודים המשמשים לו בנים. לרוב ההתעסקות היא בעיקר בעצים בינאריים, כלומר עצים שבהם לכל קודקוד יש לכל היותר 2 בנים – בן ימני ובן שמאלי. typedef struct Node { int data; struct Node *ls, *rs; } Node;

מהם עצים דינאמיים? הקודקוד הראשון בעץ, זה שאף קודקוד אחר לא מצביע עליו – נקרא ה"שורש" של העץ. (Root) הקודקודים שאינם מצביעים על שום קודקוד אחר נקראים עלים.

עץ חיפוש בינארי השימוש הנפוץ ביותר לעצים דינאמיים הוא עץ חיפוש בינארי. עץ חיפוש בינארי הוא עץ בינארי המקיים עבור כל קודקוד: תת העץ הימני מכיל קודקודים המכילים ערכים הגדולים (או שווים) מהערך של הקודקוד עצמו. תת העץ השמאלי מכיל קודקודים המכילים ערכים הקטנים מהערך של הקודקוד עצמו

מבוא למדעי המחשב מ' - תרגול 7 עץ חיפוש בינארי מבוא למדעי המחשב מ' - תרגול 7

ערימה (Heap) ערימה היא עץ המקיים תנאי אחד, תנאי הערימה - כל קודקוד בעץ מכיל ערך הגדול או שווה לכל אחד מערכי בניו. (בערימת מקסימום)

תרגיל כתבו פונקציה המקבלת מצביע לשורש של עץ. על הפונקציה להחזיר את מספר העלים בעץ. int numOfLeavesRec(Node *p) { if(!p) return 0; int tmp = numOfLeavesRec(p->ls)+numOfLeavesRec(p->rs); if(tmp == 0) return 1; return tmp; }