סוגי נתונים מופשטים (abstract data type)

26
םםםם םםםםםם םםםםםםם( Abstract Data Type ) םםם"ם םםםם םםם םםםםםם םםםםםם םםם םםםםםםםם םםםםםם םם םם םםםםםםם( םםםםם םםםםם(. int, float, char םםם םםםםםם םם םםםםםםםם םםם םםםם םםםםםםם םםםםםםם םם םם םםםםםם םםםםםם םםם םםםם םםםםםם םםםםםםם םם םםםםםם םם םםםםםםםם םםםםםםם. םםםם, םםםםםם םםםם םםםם םםםםם םםםםםםS םםםם םםםם םםםa, b

Upload: shad-roach

Post on 02-Jan-2016

31 views

Category:

Documents


4 download

DESCRIPTION

סוגי נתונים מופשטים (Abstract Data Type). בדר"כ כאשר אנו כותבים תוכנית אנו מתחייבים להגדיר את כל הנתונים באופן מדויק ( .(int, float, char - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: סוגי נתונים מופשטים (Abstract Data Type)

סוגי נתונים מופשטים (Abstract Data Type)

בדר"כ כאשר אנו כותבים תוכנית אנו מתחייבים להגדיר את כל הנתונים באופן

int, float, char.)מדויק ) אבל בתיאור של אלגוריתם אין צורך

בהגדרות מדויקות של כל הפרטים ואפילו אין צורך בייצוג קונקרטי של הזכרון בו

מאוכסנים הנתונים. למשל, בבעיית מיון ,a חשוב שלכל זוגSעבור קבוצת נתונים

b S לא משנה מאיזה a=b. או a>b או a<bאו

סוג נתונים אבל חשוב שניתן להשוות ביניהם.

Page 2: סוגי נתונים מופשטים (Abstract Data Type)

סוגי נתונים מופשטים (Abstract Data Types)

: אוסף נתונים ופעולות עליהם ללא הגדרה נתונים מופשט סוגפרטים למימוש נקרא

(.ADT)

ADTהכי חשוב באילו פעולות תומך מסוים

Page 3: סוגי נתונים מופשטים (Abstract Data Type)

)ADT )List רשימה

היא סידרה של אלמנטיםL={x1,x2,…, xn}

|L|. מסמן אורך הסדרה

Page 4: סוגי נתונים מופשטים (Abstract Data Type)

ההצגות הבסיסיות של רשימהעל ידי:

מערך )בזכרון רציף(

רשימה מקושרת )בזכרון לא רציף(

Page 5: סוגי נתונים מופשטים (Abstract Data Type)

פעולות מופשטות על רשימה פעולות בסיסיות

•Head)( Ptr•Next)Ptr( Ptrמיקום של האיבר הבא • Prev)Ptr( Ptr •Key)Ptr( value•Insert)Ptr,newPtr( Head)( •Delete)Ptr( Head)( •MakeEmptyList)(יצירת הרשימה •Length)( value• Outside)Ptr( booleanאמת – מחוץ לגבולות

Page 6: סוגי נתונים מופשטים (Abstract Data Type)

פעולות מופשטות על רשימה פעולות מורכבות

•Access)index(value•ListSearch)value(Ptr

•IsEmptyList)(בדיקה האם הרשימה ריקה

Page 7: סוגי נתונים מופשטים (Abstract Data Type)

פעולות מופשטות על רשימהדוגמא

ListSearch)value(:PtrPtr x Head)(While )not Outside)x(( and Key)x( <> value

x Next)x(

If Outside)x( Return nil

ElseReturn x

Page 8: סוגי נתונים מופשטים (Abstract Data Type)

)ADT )Stackמחסנית אוסף סדור של אלמנטים כאשר

הכנסה והוצאה – דרך קצה אחד, הנקרא ראש המחסנית.

האחרון הנכנס הוא הראשון שיצא. LIFO: last –in, first out))

Page 9: סוגי נתונים מופשטים (Abstract Data Type)

פעולות מופשטות על מחסנית

•Top)( value בדיקה מהו האיבר בראש המחסנית

•Pop)( value הוצאת איבר תמיד מראש המחסנית

•Push)x( הכנסת איבר תמיד לראש המחסנית

•MakeEmptyStack) (Ptrיצירת המחסנית

•IsEmptyStack)(בדיקה האם המחסנית ריקה

Page 10: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסנית

• רוצים לחשב 3(*1+5)ללא סוגריים: )infix(ביטוי

• 1 5 + 3 * )postfix(

• ? postfix -איך נתרגם את3*1+5ל :

Page 11: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסנית postfixחישוב ביטוי ב-

*3 + 5 1 נניח מחסנית ריקה:•בא מספר --- מכניסים למחסנית:•באה פעולה :•

איברים מהמחסנית 2מוציאים –מבצעים חישוב–מכניסים תוצאה למחסנית–

כאשר הסדרה הסתיימה : האיבר )היחיד( בראש •המחסנית הוא התשובה.

Page 12: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסניתסדרת הפעולות:

1 5 + 3* Push)1(Push)5(Pop)5(Pop)1(5+1Push)6(Push)3(Pop)3(Pop)6(3*6Push)18(

Page 13: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסנית מציאת ההוראה הבאה לבצוע

• main f g

• X5; a2; v3;

• f)X(; bg)a(; w5;

• Z8; c4;

Page 14: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסנית מציאת ההוראה הבאה לבצוע

( יחיד, והוא מכיל את pc )בקיצור: program counterקיים •כתובת ההוראה הבאה לבצוע

מקבל את כתובת ההוראה pcלאחר טעינת התכנית ה-•הראשונה

מחזור רגיל:• cpuטעינת ההוראה ל- – להוראה הבאהpcקידום ה-– cpuבצוע ההוראה שנטענה ל- –

בזהוי שההוראה היא קריאה לפונקציה:• למחסנית pcהכנסת ערך ה- – pcנתינת כתובת ההוראה הראשונה של הפונקציה ל- –

ביציאה מהפונקציה: • pcהוצאת ערך מהמחסנית ונתינתו ל- –

אם יוצאים מפונקציה והמחסנית ריקה - סיימנו•

Page 15: סוגי נתונים מופשטים (Abstract Data Type)

דוגמא לשימוש במחסניתסדרת הפעולות:

Push)pc “z 8”(Push)pc “c 4”(Pc Pop)( /* c 4 */Pc Pop)( /* z 8 */ Pc Pop)( /* אבל המחסנית ריקה ... סיימנו!*/

•main f g •X5; a2; v3;•f)X(; bg)a(; w5;•Z8; c4;

Page 16: סוגי נתונים מופשטים (Abstract Data Type)

Stackההצגות הבסיסיות של על ידי:

מערך )בזכרון רציף(

רשימה מקושרת )בזכרון לא רציף(

Page 17: סוגי נתונים מופשטים (Abstract Data Type)

class Stack{ int stack[]; int head;//head of stack int n; //size of the stack //........................................................... public Stack)int n({ stack = new int[n]; head = 0; this.n = n; }//......................................................... public boolean empty)({ return )head == 0(; } //........................................................... public boolean full)({ return )head == n(; }

//...........................................................

Page 18: סוגי נתונים מופשטים (Abstract Data Type)

public int pop)({ if )this.empty)(({ System.out.println)"The stack is empty"(; //underflow error return 0; }else{ int el = stack[head-1]; head--; return el; } }//...........................................................public void push)int el({ if )this.full)(({ System.out.println)"The stack is full"(;//overflow error }else{ stack[head] =el; head++; } }

//...........................................................

Page 19: סוגי נתונים מופשטים (Abstract Data Type)

//...........................................................

public static void main)String args[]({

Stack s = new Stack )5(;

for)int i=0;i<7;i++( s.push)i(;

for)int i=0;i<6;i++( System.out.println)s.pop)(+" "(; }

}

The stack is full

The stack is full

4

3

2

1

0

The stack is empty

0

Process Exit...

Page 20: סוגי נתונים מופשטים (Abstract Data Type)

)ADT )Queueתור אוסף סדור של אלמנטים כאשר

הכנסה דרך קצה אחד,; הנקרא סוף התור

הוצאה דרך קצה האחר הנקרא ראש התור.

אלמנטים הראשון הנכנס הוא שיצא. הראשון

FIFO: first –in, first -out))

Page 21: סוגי נתונים מופשטים (Abstract Data Type)

פעולות מופשטות על התור

•Front)( value בדיקה מהו האיבר ראשוןבתור

•Dequeue)( value הוצאת איבר תמיד מראש התור

•Enqueue)x( הכנסת איבר תמיד לסוף התור

•MakeEmptyQueue) (יצירת התור

•IsEmptyQueue)(בדיקה האם התור ריק

Page 22: סוגי נתונים מופשטים (Abstract Data Type)

: דוגמאות תור

•Queue

פשוט תור הדפסה

• Queue•X2;•YX+3;•Z5;

Page 23: סוגי נתונים מופשטים (Abstract Data Type)

Queueההצגות הבסיסיות של על ידי:

מערך )בזכרון רציף(

רשימה מקושרת )בזכרון לא רציף(

Page 24: סוגי נתונים מופשטים (Abstract Data Type)

(Priority Queue) עדיפות ADTתור

Priorityכל אלמנט כולל שדה נוסף אוסף סדור של אלמנטים כאשר

; הכנסה דרך קצה אחד הוצאה דרך קצה האחר.

המקסימלי Priorityהאלמנט בעל ה-

. )מינימלי( הוא הראשון שיצא

Page 25: סוגי נתונים מופשטים (Abstract Data Type)

פעולות על תור עדיפות

•Maximum)( value מחזיר איבר בעל עדיפות מקסימלית בתור

•Extract_Max)( value הוצאת איבר בעל עדיפות מקסימלית

•AddPriorityQueue )x( הוספת איבר לתור MakeEmptyPriorityQueue) (יצירת התור

•IsEmptyPriorityQueue) (בדיקה האם התור ריק •PriorityQueueSort)set X (

Page 26: סוגי נתונים מופשטים (Abstract Data Type)

:עדיפות דוגמאות תור

• to schedule jobs on a shared computer:– When a job is finished, the highest-priority job is selected

from the pending )by Extract_Max)((

– A new job can be added to the queue at any time

)by AddPriorityQueue)((