חומרי לימוד - מדעי המחשב
Transcription
חומרי לימוד - מדעי המחשב
ט'/טבת/תשע"ה רשימה מקושרת List - כל חוליה היא טנ"מ בפני עצמו המכיל הן את הערך והן את החוליה הבאה לאחריה תיאור סְ כֵמַ טי של חוליה תיאור סְ כֵמַ טי של רשימה 1 רשימה -בניית רשימה ממשק רשימה )(>public List<T )(public Node<T> GetFirst //הפעולה בונה ומחזירה רשימה ריקה //הפעולה מחזירה את החוליה הראשונה ברשימה ,אם הרשימה ריקה הפעולה מחזירה null //הנחה – הרשימה אותחלה //הפעולה מחזירה האם הרשימה ריקה //הנחה – הרשימה אותחלה //הפעולה מחזירה מחרוזת המתארת את הרשימה //הנחה – הרשימה אותחלה )(public bool IsEmpty )(public override string ToString רשימה -בניית רשימה 2 1 ט'/טבת/תשע"ה ממשק רשימה -המשך )public Node<T> Insert(Node<T> p, T info //הפעולה מכניסה לרשימה חוליה חדשה שהערך שלה הוא infoאחרי החוליה pהפעולה מחזירה את החוליה החדשה שהוכנסה. //כדי להכניס איבר ראשון לרשימה הערך של הפרמטר pצריך להיות .null //הנחות – הרשימה אותחלה ,החוליה pקיימת ברשימה )public Node<T> Remove(Node<T> p //הפעולה מוציאה את החוליה pמהרשימה ומחזירה את החוליה הבאה אחריה אם הוצאה החוליה האחרונה ברשימה הפעולה תחזיר null //הנחות – הרשימה אותחלה ,החוליה pקיימת ברשימה רשימה -בניית רשימה 3 בניית רשימה -תבנית אופן הוספת חוליה לרשימה באופן סְ כֵמַ טי ,מוסיפים חוליה חדשה עם ערך חדש ,אחרי מיקום חוליה מסוימת. + רשימה -פעולות הממשק וסריקת רשימה 4 2 ט'/טבת/תשע"ה בניית רשימה -תבנית אופן בניית רשימה: הגדרת רשימה חדשה ;)(>List<int> l_new = new List<int הגדרת חוליה והצבת תחילת הרשימה החדשה בה ;)(Node<int> p_new = l_new.GetFirst הכנסת ערכים לרשימה החדשה בתוך לולאה הוספת ערך לרשימה (מחזירה את המיקום אחריו נוסף הערך = החוליה החדשה) תוך כדיי קידום החוליה ;)p_new = l_new.Insert(p_new, x_new 5 רשימה -בניית רשימה בניית רשימה -דוגמה )(static List<int> SetList { //מחזירה רשימה של 50מספרים שלמים אקראיים בין 1-10 ;)(>List<int> l_new = new List<int ;)(Random rnd = new Random ;)(Node<int> p_new = l_new.GetFirst )for (int i = 0; i < 50; i++ { ;))p_new = l_new.Insert(p_new, rnd.Next(1, 11 } ;return l_new } רשימה -בניית רשימה 6 3 ט'/טבת/תשע"ה בניית רשימה – תרגיל 1 כתבו פעולה המחזירה רשימה של מספרים ממשיים הכוללת את כל המספרים החד ספרתיים לפני ואחרי הנקודה (למשל )3.2להם ספרת העשיריות אינה גדולה מספרת האחדות. פתרון טיוטה פעולת עזר – בדיקה עבור מספר בודד האם עונה לתנאי פעולה עיקרית – מעבר על כלל המספרים 1.0-9.9והכנסה של אלו העונים לתנאי לרשימה פעולת העזר )static bool IsNumberOk(double num_d { //מחזירה האם למספר ספרת העשיריות אינה גדולה מספרת האחדות ;int ones = (int)(num_d) % 10 ;int tenthses = (int)(num_d * 10) % 10 ;)return !(tenthses > ones } 7 רשימה -בניית רשימה בניית רשימה – תרגיל 1 הפעולה העיקרית )(static List<double> SetDoubleList { //מחזירה רשימה של כל המספרים הממשיים 1-9עם ספרה אחת אחרי הנקודה (עשיריות) ;)(>List<double> l_new = new List<double ;)(Node<double> p_new = l_new.GetFirst //מעבר על כלל המספרים -בדיקה והוספת המתאימים )for (double i = 1.0; i <= 9.9; i += 0.1 { ))if (IsNumberOk(i ;)p_new = l_new.Insert(p_new, i ;} return l_new רשימה -בניית רשימה 8 } 4 תשע"ה/טבת/'ט 2 בניית רשימה – תרגיל .כתבו פעולה המחזירה רשימה הכוללת את המספרים שאינם שליליים מתוך הרשימה המתקבלת פתרון static List<int> List2List_NonNegative(List<int> l) { מחזירה רשימה הכוללת את המספרים שאינם שליליים בלבד מתוך הרשימה המתקבלת// List<int> l_new = new List<int>(); Node<int> p_new = l_new.GetFirst(); Node<int> p = l.GetFirst(); int x; while (p != null) { x = p.GetInfo(); if (x > 0) p_new = l_new.Insert(p_new, x); p = p.GetNext(); } return l_new; } 5 9 בניית רשימה- רשימה