تراكيب البيانات مدرس المساق/ أ. محمود رفيق الفـــرَّا
Download
Report
Transcript تراكيب البيانات مدرس المساق/ أ. محمود رفيق الفـــرَّا
قسم علوم الحاسوب و تكنولوجيا المعلومات
تخصص دبلوم البرمجيات و قواعد البيانات
تراكيب البيانات
الوحدة السادســة
هيكل البيانات Stack
المادة العلمية إعداد
http://mfarra.cst.ps
أ .محمود رفيق الفـــرَّ ا
الفـــرا
مدرس المساق /أ .محمود رفيق
َّ
2010-2011
محاور المحاضرة
2
ما هـو المكدس ؟
عملية اإلضافة Push operation
عملية الحذف Pop operation
عرض بيانات عنصر ما
إفراغ الـ Stack
طباعة العناصر
البحث عن عنصر ما
ترتيب العناصر باستخدام bubble Sort
مساق تراكيب البيانات
()Stack
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
3
الذكر عند النوم
باسممربي ب م ينبممبكيأرف م ينبممبي ب م ي ي م كي
نف م ي ا هر،ممانين ي س م ،اي اهفظ،مما برمماي حفم يب م
عفادكيالصالحين
عنْ أبي هريرة رضي هللا عنها قال رسول هللا صلل هللا عليلو وسللم ( :إذا أوى أحلدكم
إل فراشو ،فلينفضو بداخلة إزاره ،فإنو ال يدري ملا خلفلو عليلو ،للم ليضلطجع علل
شقو األيمن ،لم ليقل :باسلمك ربلي وضلعت جنبلي ،وبلك أرفعلو ،إن أمسلكت نفسلي
صحيح الجامع
فارحمها ،وإن أرسلتها فاحفظها بما تحفظ بو عبادك الصالحين )
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ما هـو المكدس ؟ Stack
4
المكدس هو أحد هياكل البيانات التي تسمح بالتفاعل معهلا (حلذف و
إضافة) من جهة واحدة فقط و هي تحاكي مفهلوم (اللرص الرأسلي)
ملل مجموعة من الكتب الرأسيـة أو مجموعة من اللمار كملا يظهلر
في الصور أدناه.
ما هـو المكدس ؟ Stack
5
و إن كانت القائمة تسمح بالحلذف و اإلضلافة فلي أي موضلع و ملن
أي جهـة ,فإنَّ المكدس ال يسمح إال بلالث عمليلات أساسلية فقلط تلتم
من أعل و هم :اإلضافـة Pushو الحذف Popالعرض .Peek
و تتعامل العمليلات ملع المكلدس بمبلدأ ملن يلدخل أوال يخلرخ أخيلرا
)FIFO (First in First Out
هذا ال يعني أننا ال نستطيع القيام بعمليات أخلرى ,و لكلن أي عمليلة
أخرى البد أن تعتمد عل هذه العمليات.
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ما هي عناصر المكدس؟
6
يتكون المكدس من عناصر مماللة تماما لعناصر القائمة ,و ال يوجد
فروق أبدا بينهما سوى العمليات التي يسمح بالقيام بها عل كالهما.
7
Top
1
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
من الموظفينStack عناصر
7
1. class Employee {
2.
public int salary;
3.
public String name;
4.
public Employee()
5.
{
6.
salary = 300;
7.
name = "no name";
8.
}
9.
public Employee(int salary, String name)
10.
{
11.
this.salary = salary;
12.
this.name = name;
13.
}
14. محمود }رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
بناء Stackمن الموظفين
8
1. class EmployeeStack
2.
{
3.
;Employee Top = null
4.
;int length =0
هنا تضاف العمليات المختلفة //
}
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
5.
6.
عملية اإلضافة Push operation
9
إضافة أي عنصر يتم من خالل التالي:
جعل مؤشر العنصر الجديد يشير إل ما يشير لو المؤشر Top
جعل المؤشر Topيشير إل العنصر الجديد.
7
مساق تراكيب البيانات
Top
Top
1
1
6
6
Top
6
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Push operation عملية اإلضافة
10
1. public void Push(Employee NewEmp) {
2.
Employee newe = NewEmp;
3.
if (Top == null) {
4.
Top = newe;
5.
newe.next = null; }
6.
else {
7.
newe.next = Top;
8.
Top = newe; }
9.
length++;
10.
Console.WriteLine("A new Employee has been added to Stack: "+length);
11.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية الحذف Pop operation
11
حذف العنصر يتم من خالل التالي:
جعل Topيشير إل العنصر التالي للعنصر األول.
7
مساق تراكيب البيانات
Top
7
1
1
6
6
Top
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Push operation عملية اإلضافة
12
1. public void Pop()
2.
{
3.
if (Top == null)
4.
Console.WriteLine("Stack is Empty!!");
5.
else
6.
{
7.
Top = Top.next;
8.
length--;
9.
Console.WriteLine("Now Top Points to: " + Top.name);
10.
}
11.
12.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية عرض بيانات العنصر األخير Peek
13
تعللرف عمليللة عللرض البيانللات للعنصللر األخيللر (آخللر عنصللر ت لم
إضافتو) ما بـ .Peek
و هذا العنصر مشار إليو بالمؤشـر TOP
Top.name
Top.salary
…
مساق تراكيب البيانات
7
Top
1
6
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Peek عملية عرض بيانات العنصر األخير
14
1. public void Peek()
2.
{
3.
if (Top == null)
4.
Console.WriteLine("The Stack is Empty!!");
5.
else
6.
Console.WriteLine("The Employee Data:\n"+
7.
"Name: "+Top.name+"\nSalary: "+Top.salary);
8.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
15
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
16
الذكر عند االستيقاظ من النوم
الحرممهلليايالممد ي ديع م ي نهم ينعا ممان م ي
أ هلل ينين ذ يل يبدكره
عنْ أبي هريرة رضي هللا عنو قال ,قال رسول هللا صل هللا عليلو وسللم ( :إذا اسلتيقظ
أحدكم فليقل :الحمد هلل الذي رد علي روحي وعافلاني فلي جسلدي ،و أذن للي بلذكره)
حسـنـَّـو األلباني
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
عملية إفراغ كافة عناصر الـ Stack
17
إفللراغ كافللة عناصللر المكللدس هللي ببسللاطة جعللل المؤشللر Topال
يشلللير لهلللذه العناصلللر و بلللذلك تصلللبح الكائنلللات (العناصلللر) غيلللر
مستعملة ,مما يجعلها تحذف تلقائيـا من الذاكرة.
7
Top
1
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Stack عملية إفراغ كافة عناصر الـ
18
1. public void Clear()
2.
{
3.
if (Top == null)
4.
Console.WriteLine("The Stack is Empty!!");
5.
else
6.
Top = null;
7.
Length = 0;
8.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية طباعة عناصر الـ Stack
19
عملية الطباعة تتم من خالل التنقل عل عناصلر المكلدس و طباعلة
البيانات و هذا يتم من تعريف متغير Currentيبدا من حيث يشلير
المتغير .Top
7
next
next
Top
current
1
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Stack عملية طباعة عناصر الـ
20
1.
2.
3.
4.
5.
6.
7.
public void PrintAll()
{
Employee current = Top;
int x =1;
while (current != null)
{
Console.WriteLine("Data Of Employee # "+x+" is\n "+ "Name: “ +
current.name + "\nSalary: "+current.salary);
8. Console.WriteLine("==============================");
9.
x++;
10.
current = current.next;
11.
}
12.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
البحث عن عنصر ما
21
البحث كما تعلمنا سابقا قد يلتم بلأكلر ملن طريقلـة ,و جمليعهم يعتملد
علل وجللود تكللرار يتحللرك مللن خللالل وجللود مؤشللر يبللدأ مللن حيللث
يوجد المؤشر Top
7
next
next
Top
current
1
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
البحث عن عنصر ما
22
1. public void SearchByName(String name )
2.
{
3.
Employee current = Top;
4.
bool flag = false;
5.
while ( current != null)
6.
{
7.
if (name.CompareTo(current.name) == 0)
8.
{
9.
flag = true;
10.
break;
11.
}
12.
current = current.next;
13.
}
14.
if (flag == true)
15.
Console.WriteLine("Exist!!");
16.
else
17.
Console.WriteLine("Does not Exist!!");
18. محمود رفيق الفــرَّ ا.}أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
23
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
24
الذكر عند الصعود و النزول
ذايصبهللنايق رايااي كفري...
ذاينزلرايق رايسفحا يااي...
عنْ جابر بن عبلد هللا رضلي هللا عنهلا قلال ( :كنلا إذا صلعدنا كبرنلا ،وإذا
صحيح البخاري
نزلنا سبحنا ) .
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ترتيب العناصر باستخدام bubble Sort
25
ترتيلللب العناصلللر تلللم شلللرحو فيملللا سلللبق ,و االخلللتالف فلللي طبيعلللة
العناصللر ,فعناصللر المكللدس عبللارة عللن كائنللات يللتم اإلشللارة لهللا م لن
خالل متغير Currentيبدأ من حيث يوجد Top
7
next
next
Top
current
1
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Stack عملية طباعة عناصر الـ
26
1. public void bubSort()
2.
{
3.
for (int i = 0; i < length; i++)
4.
{
5.
Employee current = Top;
6.
while (current.next != null) {
7.
if (current.salary > current.next.salary) {
8.
int TempSalary = current.salary;
9.
String Tempname = current.name;
10.
current.salary = current.next.salary;
11.
current.name = current.next.name;
12.
current.next.salary = TempSalary;
13.
current.next.name = Tempname; }
14.
current = current.next; } }
15.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
27
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا