تراكيب البيانات

Download Report

Transcript تراكيب البيانات

‫قسم علوم الحاسوب و تكنولوجيا المعلومات‬
‫تخصص دبلوم البرمجيات و قواعد البيانات‬
‫تراكيب البيانات‬
‫الوحدة الخامســة‬
‫هيكل البيانات ‪Linked List‬‬
‫المادة العلمية إعداد‬
‫‪http://mfarra.cst.ps‬‬
‫الفـــرا‬
‫أ‪ .‬محمود رفيق‬
‫َّ‬
‫الفـــرا‬
‫مدرس المساق‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫‪2010-2011‬‬
‫محاور المحاضرة‬
‫‪2‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫األصناف ذاتيـة المرجعيـة‬
‫ما هي القوائم المترابطـة؟ (‪)Linked List‬‬
‫إضافة عناصر في البداية‬
‫حذف عناصر من البداية‬
‫إضافة عناصر في النهاية‬
‫حذف عناصر من النهاية‬
‫إضافة عناصر في موضع ما‬
‫حذف عناصر من موضع ما‬
‫طباعة عناصر القائمة‬
‫ترتيب عناصر القائمة‬
‫البحث عن عنصر ما في القائمة‬
‫مساق تراكيب البيانات‬
‫‪Self- Referential class‬‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بذكرك ربنـا نحيــا‬
‫‪3‬‬
‫‪‬‬
‫الذكر لمن خرج من البيت‬
‫بسمملاله‪ ,‬توكلممعلىل م لهلو اللحممو لو اللقمموإلالاللب م هلل‪ ,‬الللهمملال‬
‫ل‬
‫ل‬
‫الن ممعلالى ممو لبم م لالُلال لالولال للالولالل مل مملالالولاللل مملالالولال ه ممولالول‬
‫يجهولىلعل‪.‬‬
‫ْ‬
‫عن أم سلمة رضي هللا عنها قالت ‪( :‬ما خرج النبي صلى هللا عليه وسللم ملن بيتلي قلط‬
‫إال رفللع طرفلله إلللى السللمال فقللال اللهللم أعللوذ بللك أن أضللل أو أضللل أو أ ل أو أ ل أو‬
‫صحيح أبو داود و صححه األلباني‬
‫أظلم أو أظلم أو أجهل أو يجهل علي )‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫األصناف ذاتيـة المرجعيـة‬
‫‪Self- Referential class‬‬
‫‪4‬‬
‫‪‬‬
‫‪‬‬
‫األصناف ذاتيـة المرجعيـة هي أصناف تحتلو عللى كائنلات م لتقة ملن‬
‫الصنف ذاته‪.‬‬
‫و هللي تسللتخدم لللربط الكائنللات بعضللها بعضللا لبنللال العديللد مللن هياكللل‬
‫البيانات‪ ,‬و التي سندرس بعضـا منها هذا الفصل إن ال هللا‪.‬‬
‫الكائن ‪ next‬تم اشتقاقه‬
‫من الصنف ‪ node‬داخل‬
‫الصنف ‪ Node‬ذاته‬
‫{ ‪class Node‬‬
‫;‪private int data‬‬
‫;‪private Node next‬‬
‫) ‪public Node( int d‬‬
‫{‬
‫‪// some code‬‬
‫} }‬
‫ما هي القوائم المترابطـة؟‬
‫(‪)Linked List‬‬
‫‪5‬‬
‫‪‬‬
‫‪‬‬
‫القوائم المترابطة (‪ )Linked List‬هي أحد هياكل البيانات التلي تمكننلا ملن‬
‫إن ال قائمة قابلة للحذف و اإلضافة و التعديل و البحلث و الترتيلب‪,‬‬
‫مع األخذ بعين االعتبار َّ‬
‫أن حجمها غير ثابت (‪. )Dynamic data structure‬‬
‫هلللذل القائملللة يلللتم تطبيقهلللا اعتملللادا عللللى مفهلللوم األصلللناف ذاتيلللة‬
‫المرجعية‪ ,‬و بالتلالي نلتمكن ملن اللتحكم فلي عناصلرها بحريلة أكبلر‬
‫من التعامل مع عناصر المصفوفة‪.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫ما هي عناصر القائمة؟‬
‫‪6‬‬
‫‪‬‬
‫‪‬‬
‫القائمة تتكون من مجموعة من الكائنات الم تقة من صنف محدد‪.‬‬
‫هذل العناصر يتم تمثيلها بصنف يحاكي ما نود تطبيقه‪ ,‬و مثال ذلك‪/‬‬
‫‪‬‬
‫القائمللة المترابطللة لصللنف المللوظفين تحتللو علللى مللوظفين‪ ,‬و بالتللالي‬
‫فعناصر القائمة هي كائنات م تقة من الصنف موظلف‪ ,‬و هلذل الكائنلات‬
‫تمثل الموظفين و بياناتهم‪.‬‬
‫‪....‬‬
‫حسام‬
‫‪ 35‬سنة‬
‫رئيس قسم‬
‫مساق تراكيب البيانات‬
‫محمد‬
‫‪ 30‬سنة‬
‫محلل نظم‬
‫أحمد‬
‫‪ 25‬سنة‬
‫مبرمج‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫تطبيق قائمة مترابطـة من السيارات‬
‫‪7‬‬
‫‪3‬‬
‫الصنف‬
‫‪Car system‬‬
‫هذذذذذذا الصذذذذذنف يسذذذذذتخدم‬
‫للتعامل مع القائمة‪ ,‬حيذث‬
‫يذذذذتم ءنشذذذذان كذذذذائن مذذذذن‬
‫الصذذذنف ‪ Car List‬ثذذذم‬
‫نستخدم العمليات المتاحة‬
‫لإلضذذذذذذافة و الحذذذذذذذف و‬
‫غير ذلك ‪...‬‬
‫مساق تراكيب البيانات‬
‫هذا الصنف يحذاك القائمذة‪,‬‬
‫و يطلق عليذه اسذم (المذدير)‬
‫حيث من خالله تتذوفر دوال‬
‫الحذذذذذذذذذذذذف و اإلضذذذذذذذذذذذافة و‬
‫الترتيذذذذذب و غيذذذذذر ذلذذذذذك‪ ,‬و‬
‫تسذذذذتخدم هذذذذذ الذذذذدوال مذذذذن‬
‫خالل الصنف ‪Car System‬‬
‫الصنف‬
‫‪ListCar‬‬
‫‪2‬‬
‫‪1‬‬
‫الصنف‬
‫‪Car‬‬
‫هذذذذذذذا الصذذذذذذنف يحذذذذذذاك‬
‫السذذيارات و هذذو يحتذذو‬
‫على جملذة لتعريذف كذائن‬
‫مذذن الصذذنف ذاتذذه‪ ,‬و فيذذه‬
‫يذذتم تمثيذذل البيانذذات الت ذ‬
‫تعبر عن هيئة الصنف‪.‬‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بنال صنف يحاكي السيارات‬
8
1. class Car
2.
{
3.
public int id;
4.
public String location;
5.
public String type;
6.
public Car next;
7.
public Car()
8.
{
9.
id = 0;
10.
location = "Gaza";
11.
type = "Private";
12.
}
13. }
‫الفــرا‬
‫ محمود رفيق‬.‫ أ‬/‫المادة العلمية إعداد‬
َّ
‫مساق تراكيب البيانات‬
‫بنال صنف يحاكي قائمة السيارات‬
‫‪9‬‬
‫‪1. class ListCar‬‬
‫‪2.‬‬
‫{‬
‫‪3.‬‬
‫متغير يرصد عدد عناصر القائمة ‪private int lenght ; //‬‬
‫‪4.‬‬
‫كائن من نوع الصنف الرئيس سيستخدم لمعرفة بداية القائمة ‪public Car head; //‬‬
‫‪5.‬‬
‫)(‪public ListCar‬‬
‫‪6.‬‬
‫{‬
‫‪7.‬‬
‫;‪lenght = 0‬‬
‫‪8.‬‬
‫ف البداية هذا المؤشر يشير ءلى ال ش ن حيث ال يوجد عناصر ف القائمة ‪head = null; //‬‬
‫‪9.‬‬
‫}‬
‫‪10.‬‬
‫هنا يتم إضافة دوال الحذف و اإلضافة و غير ذلك ‪//‬‬
‫} ‪11.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫ا تقاق كائن من قائمة السيارات‬
‫‪10‬‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪ListCar list1 = new ListCar‬‬
‫}‬
‫‪‬‬
‫‪‬‬
‫هذا الصنف بعد ذلك سيتم من خالله ا تقاق ثم استخدام القائمة‬
‫‪ list1‬و ما فيها من إمكانيات (دوال و متغيرات) مثل الحذف و‬
‫اإلضافة و الترتيب و غير ذلك‪ ,‬مع االنتبال إلى َّ‬
‫أن هذل اإلمكانيات‬
‫تم برمجتها و تجهي ها تماما داخل صنف القائمة‪.‬‬
‫فيما يلي إن ال هللا سيتم البدل في برمجة و رح هذل الدوال ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫‪1.‬‬
‫‪2.‬‬
‫‪3.‬‬
‫‪4.‬‬
‫أ كركم‬
‫‪11‬‬
‫السؤال مفتاح للعلوم كلها‪...‬‬
‫تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بذكرك ربنـا نحيــا‬
‫‪12‬‬
‫‪‬‬
‫الذكر لمن عاد إلى البيت‬
‫الللهمملال! النممعلالل م ل لمومم‪،‬لالليممولخلجلومومم‪،‬لاللي مم‪ ،‬لجلبسمملا هل‬
‫ولجنم لجلوبسمملالهلم‪ ،‬نم لجلوىلم لهللبنم لتوكلنم لجلثمملاللوسممللال‬
‫ىل لالهله‬
‫ْ‬
‫عن أبي موسى األ عر أن رسول هللا صلى هللا عليه وسلم قال‪( :‬إذا ولج الرجلل بيتله‬
‫؛ فليقل ‪ :‬اللهم ! إني أسألك خيلر الملولج و وخيلر المخلرج و بسلم هللا ولجنلا و وبسلم هللا‬
‫خرجنا و وعلى هللا ربنا توكلنا و ثم ليسلم على أهله )‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر للقائمة في البداية‬
‫‪‬‬
‫‪.1‬‬
‫‪.2‬‬
‫إلضافة عنصر في بداية القائمة‪ ,‬كل ما نحتاج له معرفة الحقيقة‬
‫المتعلقة بالمؤ ـر ‪ Head‬و هي أنه يجب أن ي ير دائما إلى أول‬
‫عنصر في القائمة‪ ,‬و بالتالي فنحن إذا أردنا أن نضيف عنصر في‬
‫البداية علينا فعل ما يلي‪:‬‬
‫نجعل مؤ ر ‪ next‬للعنصر الجديد ي ير إلى ما ي ير له المؤ ر‬
‫‪ head‬و هو ي ير للعنصر األول‪.‬‬
‫نجعل المؤ ر ‪ head‬ي ير إلى العنصر الجديد‬
‫‪Data n‬‬
‫‪null‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪Data 2‬‬
‫‪Head‬‬
‫‪Data 1‬‬
‫‪1‬‬
‫‪New‬‬
‫‪data‬‬
‫‪2‬‬
‫إضافة عنصر إلى بداية القائمة‬
‫‪14‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫متغير يرصد عدد عناصر القائمة ‪private int lenght ; //‬‬
‫‪3.‬‬
‫كائن من نوع الصنف الرئيس سيستخدم لمعرفة بداية القائمة ‪public Car head; //‬‬
‫‪4.‬‬
‫{ )(‪public ListCar‬‬
‫‪5.‬‬
‫;‪lenght = 0‬‬
‫‪6.‬‬
‫ف البداية هذا المؤشر يشير ءلى ال ش ن حيث ال يوجد عناصر ف القائمة ‪head = null; } //‬‬
‫‪7.‬‬
‫{ )‪public void addAtFront(Car inserted‬‬
‫‪8.‬‬
‫;)(‪Car newc = new Car‬‬
‫• ف السذطر ‪ 8‬تذم ءشذتقاق كذائن جديذد مذن النذوع‬
‫‪9.‬‬
‫;‪newc = inserted‬‬
‫‪ Car‬ليتم مساواته بالكائن المرسل للدالة إلضافته‪.‬‬
‫‪10.‬‬
‫;‪newc.next = head‬‬
‫• ف السذطر ‪ 10‬أشذار الكذائن الجديذد للكذائن ا ول‬
‫‪11.‬‬
‫;‪lenght++‬‬
‫ف القائمة‬
‫• فذذذ السذذذطر ‪ 12‬أشذذذار المؤشذذذر ‪ head‬للعنصذذذر‬
‫‪12.‬‬
‫} ;‪head = newc‬‬
‫الجديد‬
‫} ‪13.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر للقائمة في النهايـة‬
‫‪‬‬
‫‪‬‬
‫العنصر األخير في القائمة‪ ,‬دائما ما ي ير إلى القيمة ال يل ‪,null‬‬
‫و هذا العنصر ال يوجد مؤ ر ي ير له باستمرار‪ ,‬و بالتالي عندما‬
‫نحتاج إلى التعامل معه كإضافة أو حذف أو بحث البد أن نستحدث‬
‫مؤ ر جديد نجعله ي ير له‪.‬‬
‫كيف يحدث هذا و نحن ال نعرف من هو العنصر األخير ؟‬
‫‪ ‬يتم هذا دائما من خالل جعل المؤ ر المستحدث ي ير في البداية‬
‫للعنصر األول ثم من خالل تكرار ما ينتقل يئا ف يئا حتى ي ير‬
‫للعنصر الجديد‪.‬‬
‫‪ ‬عندها نجعل مؤ ر العنصر األخير ي ير للعنصر الجديد‪.‬‬
‫‪ ‬و نجعل مؤ ر العنصر الجديد ي ير إلى القيمة ‪.null‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر للقائمة في النهايـة‬
‫‪‬‬
‫التكلللرار اللللذ نسلللتخدمه للوصلللول بالمؤ لللر المسلللتحدث للعنصلللر‬
‫األخير يعتمد على صلحة لرط واحلد هلو (‪)back.next != null‬‬
‫و هللو يعنللي طالمللا أن التللالي للعنصللر الحللالي ال يعتبللر القيمللة ‪Null‬‬
‫يمكنك االستمرار في التكرار‪ ,‬بينما إن كان التالي يساو قيمة ‪null‬‬
‫فهذا يعني أننا وصلنا للعنصر األخير و بالتالي يتوقف التكرار‪.‬‬
‫‪2‬‬
‫×‬
‫‪null‬‬
‫‪Front‬‬
‫‪Back‬‬
‫‪Data n‬‬
‫‪3‬‬
‫‪1‬‬
‫‪New‬‬
‫‪data‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪Data 2‬‬
‫‪Data 1‬‬
‫إضافة عنصر للقائمة في النهاية‬
‫‪17‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫‪3.‬‬
‫{ )‪public void addAtFront(Car inserted‬‬
‫‪4.‬‬
‫} …‬
‫{ )‪5. public void addAtback(Car inserted‬‬
‫‪6.‬‬
‫;)(‪Car newc = new Car‬‬
‫‪7.‬‬
‫;‪Car back = head‬‬
‫• فذ السذذطر ‪ 8‬تذذم وضذذع شذذرط التكذذرار للوصذذول‬
‫للعنصر ا خير‪.‬‬
‫‪8.‬‬
‫)‪while (back.next != null‬‬
‫•ف السذطر ‪ 9‬يذتم تحريذك المؤشذر ‪ back‬خطذو‬
‫‪9.‬‬
‫;‪back = back.next‬‬
‫خطو ‪.‬‬
‫‪10.‬‬
‫;‪back.next = newc‬‬
‫•فذذذذ السذذذذطر‪ 10‬نجعذذذذل مؤشذذذذر التذذذذال الخذذذذا‬
‫بالعنصر الذ يشذير لذه ‪ back‬يشذير ءلذى العنصذر‬
‫‪11.‬‬
‫;‪newc.next = null‬‬
‫الجديد‪.‬‬
‫‪12.‬‬
‫;‪length ++‬‬
‫•ف السطر ‪ 11‬نجعل التال للعنصر ا خيذر يشذير‬
‫للقيمة ‪null‬‬
‫‪13.‬‬
‫}‬
‫الفــرا‪14.‬‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود}رفيق‬
‫مساق تراكيب البيانات‬
‫َّ‬
‫حذف عنصر من بداية القائمة‬
‫‪‬‬
‫‪‬‬
‫حذف العناصر من القائمة يعني باختصار إلغال المؤ رات‬
‫(المتغيرات) التي ت ير إليه‪ ,‬مع استمرار اتصال القائمة‪.‬‬
‫بالتالي‪ ,‬لحذف العنصر األول في القائمة‪ ,‬كل ما نحتاجه أن نجعل‬
‫المتغير(المؤ ر) ‪ Head‬ي ير إلى العنصر التالي‪.‬‬
‫‪X‬‬
‫‪Head‬‬
‫‪Data n‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪Data 2‬‬
‫‪Data 1‬‬
‫‪null‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫حذف عنصر من بداية القائمة‬
‫‪19‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫{ )‪3. public void addAtFront(Car inserted‬‬
‫‪4.‬‬
‫} …‬
‫{ )‪5. public void addAtback(Car inserted‬‬
‫‪6.‬‬
‫}…‬
‫)(‪7. public void RemoveFromFront‬‬
‫{ ‪8.‬‬
‫• ف ذ السذذطر ‪ 9‬تذذم تحريذذك المؤشذذر ‪ Head‬ليشذذير‬
‫‪9.‬‬
‫;‪head = head.next‬‬
‫للعنصر التال بدال من االول‪.‬‬
‫‪10.‬‬
‫;‪lenght--‬‬
‫• فذ السذذطر ‪ 10‬تذذم تقليذذل طذذول القائمذذة الننذذا قمنذا‬
‫} ‪11.‬‬
‫بحذف عنصر‬
‫} ‪12.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫حذف عنصر من نهايـة القائمة‬
‫‪‬‬
‫حللذف العناصللر مللن نهايللـة القائمللة نحتللاج فيلله إلللى الوصللول إلللى‬
‫العنصر قبل األخير‪ ,‬ذلك لنجعلل مؤ لـرل التلالي (‪ )next‬ي لير إللى‬
‫القيمة ‪ null‬بدال من إ ارتها للعنصر األخير‪ ,‬و بذلك يكون العنصر‬
‫األخيـر قد تم حذفـه‪.‬‬
‫‪Back‬‬
‫‪1‬‬
‫×‬
‫‪null‬‬
‫مساق تراكيب البيانات‬
‫‪Data n‬‬
‫‪2‬‬
‫‪current‬‬
‫×‬
‫‪Data 3‬‬
‫‪Front‬‬
‫‪…..‬‬
‫‪Data 2‬‬
‫‪Data 1‬‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫حذف عنصر من نهايـة القائمة‬
‫‪21‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫} … { )‪3. public void addAtFront(Car inserted‬‬
‫} … { )‪4. public void addAtback(Car inserted‬‬
‫} … { )(‪5. public void RemoveFromFront‬‬
‫{ )(‪6. public void RemoveFromback‬‬
‫• فذذذذذ السذذذذذطر ‪ 7‬تذذذذذم تعريذذذذذف المؤشذذذذذر‬
‫‪7.‬‬
‫;‪Car current = head‬‬
‫‪ current‬ليشير ءلى ما يشذير لذه ‪,Head‬‬
‫‪8.‬‬
‫;‪Car back = head.next‬‬
‫و سيظل دائمذا متذرخر عذن المؤشذر ‪back‬‬
‫‪9.‬‬
‫{ )‪while (back.next != null‬‬
‫بخطو ‪.‬‬
‫• ف السطر ‪ 8‬تذم تعريذف المؤشذر ‪back‬‬
‫‪10.‬‬
‫;‪back = back.next‬‬
‫يشير ءلى العنصر التال للعنصر ‪current‬‬
‫‪11.‬‬
‫} ;‪current = current.next‬‬
‫•فذذذ ا سذذذطر ‪ 9‬ءلذذذى ‪ 11‬التكذذذرار الذذذذ‬
‫‪12.‬‬
‫;‪current.next = null‬‬
‫يسبب انتقال للمؤشرات خطو خطو حتى‬
‫نصذذذل للعنصذذذرين ا خيذذذر (‪ )Back‬و قبذذذل‬
‫‪13.‬‬
‫} ;‪lenght--‬‬
‫ا خير (‪.)current‬‬
‫}‬
‫‪14.‬ا‬
‫الفــر‬
‫رفيق‬
‫محمود‬
‫‪.‬‬
‫أ‬
‫‪/‬‬
‫إعداد‬
‫العلمية‬
‫المادة‬
‫مساق تراكيب البيانات‬
‫َّ‬
‫أ كركم‬
‫‪22‬‬
‫السؤال مفتاح للعلوم كلها‪...‬‬
‫تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بذكرك ربنـا نحيــا‬
‫‪23‬‬
‫‪‬‬
‫الذكر لمن لبس الثياب‬
‫اللحيدلهلللاللذيلكسم نعلهمذاللجلو ل قنومه مم ليوم‪،‬لحمو لمنمعلوالل‬
‫قوإ‬
‫ْ‬
‫عن معاذ بن أنس الجهني رضي هللا عنه‪ ,‬أن النبي صلى هللا عليه وسلم قال‪ ( :‬من أكل‬
‫طعاما ثم قال ‪ :‬الحمد هلل الذ أطعمني هذا الطعام و و ر قنيه من غيلر حلول منلي وال‬
‫قوة و غفر له ما تقدم من ذنبه و ومن لبس ثوبا فقلال ‪ :‬الحملد هلل اللذ كسلاني هلذا و و‬
‫ر قنيه من غير حول مني وال قوة غفر له ما تقدم من ذنبه وما تأخر) حسنه األلباني‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر في موضع ما‬
‫‪‬‬
‫‪‬‬
‫إضافة العناصر ال تقتصر على البداية و النهاية‪ ,‬فقلط نحتلاج أحيانلا‬
‫إلى إضافة عنصر عند موضع معين أو بعد قيمة معينه و ذللك عنلد‬
‫التعامل غالبا مع قائمة مرتبـة‪.‬‬
‫هللذل العمليللة سللتؤثر علللى عنصللرين‪ ,‬حيللث أن العنصللر الللذ س ليتم‬
‫إضافته البد أن ي ير إلى تالي‪ ,‬و البد لمن قبله أن ي ير إليه‪.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر في موضع ما‬
‫‪‬‬
‫و لإلضافة حالتين هما‪/‬‬
‫‪ ‬إضافة بحسب رقم الموضع مثل إضافة في الموضع الثاللث أو الرابلع و‬
‫غير ذلك‪ ,‬و في هذل الحالة نحتلاج إللى إن لال علداد داخلل تكلرار يسلتمر‬
‫حتى نصل إلى ذلك الموضع‪.‬‬
‫‪ ‬إضلللافة بحسلللب القيملللة مثلملللا نقلللول أضلللف العنصلللر ذو القيملللة ‪ 5‬فلللي‬
‫الموضع المناسب‪ ,‬و في هذل الحالة نحتاج إلى تكرار يعتملد عللى لرط‬
‫البحث عن أول عنصر أكبر من الرقم ‪ 5‬ليتم إضافة العنصر الجديد قبله‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫إضافة عنصر في موضع ما‬
‫‪current‬‬
‫‪Data n‬‬
‫‪null‬‬
‫‪n‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪2‬‬
‫‪1‬‬
‫×‬
‫‪Data 2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪New‬‬
‫‪data‬‬
‫العنصر الجديد سيتم إضافته كعنصر ثالث في القائمة‬
‫‪Head‬‬
‫‪Data 1‬‬
‫‪0‬‬
‫إضافة عنصر بحسب عنوان الموضع‬
‫‪27‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫‪3.‬‬
‫} ‪public void RemoveFromback() { ….‬‬
‫{ )‪4. public void addAtPosition(Car inserted, int position‬‬
‫‪5.‬‬
‫;‪Car current = head‬‬
‫‪6.‬‬
‫;‪Car newc = inserted‬‬
‫‪7.‬‬
‫;‪int counter =0‬‬
‫• فذذذذذ السذذذذذطر ‪ 7‬تذذذذذم تعريذذذذذف المتغيذذذذذر‬
‫‪8.‬‬
‫‪ counter‬كعداد يبذدأ عنذد الصذفر و يذدداد { )‪while (counter < position‬‬
‫خطو خطو من خذالل السذطر ‪ 10‬و ذلذك‬
‫‪9.‬‬
‫;‪current = current.next‬‬
‫للوصول للموضع الذ نريد ‪.‬‬
‫‪10.‬‬
‫} ;‪counter++‬‬
‫•السذذذذطرين ‪ 11‬و ‪ 12‬يذذذذتم فذذذذيهم ءضذذذذافة‬
‫العنصر الجديد حيذث يشذير العضذو الجديذد‬
‫‪11.‬‬
‫;‪newc.next = current.next‬‬
‫للعنصذذذذر التذذذذال لذذذذه‪ ,‬ثذذذذم يشذذذذير العنصذذذذر‬
‫‪12.‬‬
‫;‪current.next = newc‬‬
‫‪ current‬لذذه و بذذذلك يكذذون قذذد تذذم ءقحامذذه‬
‫‪13.‬‬
‫} ;‪lenght++‬‬
‫ف القائمة‪.‬‬
‫‪14.‬ا‬
‫الفــر‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود}رفيق‬
‫مساق تراكيب البيانات‬
‫َّ‬
‫إضافة عنصر في ترتيب معين‬
‫‪current‬‬
‫‪Data n‬‬
‫‪null‬‬
‫‪n‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪2‬‬
‫‪1‬‬
‫×‬
‫‪Front‬‬
‫‪Head‬‬
‫‪Data 2‬‬
‫‪Data 1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪New‬‬
‫‪data‬‬
‫العنصر الجديد سيتم إضافته بعد قيمة محددة أو قبل قيمة ما‬
‫‪0‬‬
‫إضافة عنصر بحسب عنوان الموضع‬
‫‪29‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫} … { )‪3. public void addAtPosition(Car inserted, int position‬‬
‫{ )‪4. public void addAtvalue(Car inserted, int value‬‬
‫‪5.‬‬
‫;‪Car current = head‬‬
‫‪6.‬‬
‫;‪Car front = head‬‬
‫•السذذطر ‪ 8‬يوضذذش شذذرط اسذذتمرار التكذذرار‬
‫‪7.‬‬
‫;‪Car newc = inserted‬‬
‫هو أن تكون القيمة للعنصر الحال أقل مذن‬
‫‪8.‬‬
‫القيمذذذة للعنصذذذر الجديذذذد‪ ,‬بمجذذذرد الوصذذذول { )‪while (current.value < value‬‬
‫لعنصذذذذر قيمتذذذذه أكبذذذذر أو تسذذذذاو يتوقذذذذف‬
‫‪9.‬‬
‫;‪front = current‬‬
‫التكرار‪.‬‬
‫‪10.‬‬
‫} ;‪current = current.next‬‬
‫• عنذذذذد توقذذذذف التكذذذذرار سذذذذيكون المتغيذذذذر‬
‫‪ current‬يشير للعنصر ذو القيمذة الكبيذر ‪,‬‬
‫‪11.‬‬
‫;‪newc.next = current‬‬
‫بينما المتغير ‪ front‬يشير للقيمة ا قل‪.‬‬
‫‪12.‬‬
‫;‪front.next = newc‬‬
‫•ف ذ السذذطرين ‪ 11‬و ‪ 12‬يذذتم عمذذل ءعذذاد‬
‫التوجيه‬
‫‪13.‬‬
‫} ;‪lenght++‬‬
‫‪14.‬ا‬
‫الفــر‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود}رفيق‬
‫مساق تراكيب البيانات‬
‫َّ‬
‫حذف عنصر من موضع ما‬
‫‪‬‬
‫‪‬‬
‫حذف العناصلر أيضلا ال تقتصلر عللى البدايلة و النهايلة‪ ,‬فقلد نحتلاج‬
‫أحيانا إلى حذف عنصر من موضع معين أو ذو قيملة معينله و ذللك‬
‫عند التعامل غالبا مع قائمة مرتبـة‪.‬‬
‫هللذل العمليللة سللتؤثر علللى عنصللرين‪ ,‬حيللث أن العنصللر الللذ س ليتم‬
‫حذفه كان مرتبط بعنصر تالي و عنصر سابق‪.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫حذف عنصر من موضع ما‬
‫‪‬‬
‫و للحذف حالتين هما‪/‬‬
‫‪ ‬حذف بحسب رقم الموضع مثل حلذف العنصلر الثاللث أو الرابلع و غيلر‬
‫ذلك‪ ,‬و في هذل الحالة نحتاج إلى إن ال عداد داخل التكرار يسلتمر حتلى‬
‫نصل إلى ذلك العنصر‪.‬‬
‫‪ ‬حذف بحسب القيمة مثلما نقول‪ /‬احذف أول عنصر ذو القيملة ‪ ,5‬و فلي‬
‫هذل الحالة نحتاج إلى تكلرار يعتملد عللى لرط البحلث علن أول عنصلر‬
‫ذو القيمة ‪ 5‬ليتم حذفه‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫حذف عنصر من موضع ما‬
1
Head
Data 1
Front
Current
Data k-1
×
Data k
×
Data k+1
Data n
null
‫حذف عنصر بحسب عنوان الموضع‬
33
1. class ListCar {
2.
….
3.
public void RemovefromPosition(int position) {
4.
Car current = head;
5.
Car front = head;
6.
int counter = 0;
7.
while (counter < position) {
8.
current = front;
9.
front = front.next;
10.
counter++; }
11.
current.next = front.next;
12.
lenght--; }
13. }
‫الفــرا‬
‫ محمود رفيق‬.‫ أ‬/‫المادة العلمية إعداد‬
َّ
/‫تدريب ذاتي‬
‫اكتب الكود البرمجي‬
‫الال م لحذف عنصر‬
‫بحسب قيمة معينة‬
‫مساق تراكيب البيانات‬
‫إضافة عنصر في ترتيب معين‬
‫‪current‬‬
‫‪Data n‬‬
‫‪null‬‬
‫‪n‬‬
‫‪…..‬‬
‫‪Data 3‬‬
‫‪2‬‬
‫‪1‬‬
‫×‬
‫‪Front‬‬
‫‪Head‬‬
‫‪Data 2‬‬
‫‪Data 1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪New‬‬
‫‪data‬‬
‫العنصر الجديد سيتم إضافته بعد قيمة محددة أو قبل قيمة ما‬
‫‪0‬‬
‫إضافة عنصر بحسب عنوان الموضع‬
‫‪35‬‬
‫{ ‪1. class ListCar‬‬
‫‪2.‬‬
‫‪….‬‬
‫} … { )‪3. public void addAtPosition(Car inserted, int position‬‬
‫{ )‪4. public void addAtvalue(Car inserted, int value‬‬
‫‪5.‬‬
‫;‪Car current = head‬‬
‫‪6.‬‬
‫;‪Car front = head‬‬
‫•السذذطر ‪ 8‬يوضذذش شذذرط اسذذتمرار التكذذرار‬
‫‪7.‬‬
‫;‪Car newc = inserted‬‬
‫هو أن تكون القيمة للعنصر الحال أقل مذن‬
‫‪8.‬‬
‫القيمذذذة للعنصذذذر الجديذذذد‪ ,‬بمجذذذرد الوصذذذول { )‪while (current.value < value‬‬
‫لعنصذذذذر قيمتذذذذه أكبذذذذر أو تسذذذذاو يتوقذذذذف‬
‫‪9.‬‬
‫;‪front = current‬‬
‫التكرار‪.‬‬
‫‪10.‬‬
‫} ;‪current = current.next‬‬
‫• عنذذذذد توقذذذذف التكذذذذرار سذذذذيكون المتغيذذذذر‬
‫‪ current‬يشير للعنصر ذو القيمذة الكبيذر ‪,‬‬
‫‪11.‬‬
‫;‪newc.next = current‬‬
‫بينما المتغير ‪ front‬يشير للقيمة ا قل‪.‬‬
‫‪12.‬‬
‫;‪front.next = newc‬‬
‫•ف ذ السذذطرين ‪ 11‬و ‪ 12‬يذذتم عمذذل ءعذذاد‬
‫التوجيه‬
‫‪13.‬‬
‫} ;‪lenght++‬‬
‫‪14.‬ا‬
‫الفــر‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود}رفيق‬
‫مساق تراكيب البيانات‬
‫َّ‬
‫طباعة عناصر القائمة‬
‫‪‬‬
‫‪‬‬
‫لطباعة بيانات عناصلر القائملة‪ ,‬كلل ملا نحتلاج لله تكلرار يملر عللى‬
‫عناصر القائمة‪ ,‬و في كل جولة يتم طباعة البيانات من خلالل جملل‬
‫طباعة تستخدم جملة كهذل‪.‬‬
‫‪ Current.value‬‬
‫‪ Current.id‬‬
‫‪ Current.location‬‬
‫و هكذا ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫طباعة عناصر القائمة‬
37
1. class ListCar {
2.
….
3. public void PrintData() {
4.
Car current = head;
5.
Console.WriteLine("The Data of List are");
6.
int counter = 1;
7.
while (current != null) {
8.
Console.WriteLine("The Data of element # "+counter);
9.
Console.WriteLine("=======================");
10.
Console.WriteLine("ID
" + current.id);
11.
Console.WriteLine("Location " + current.location);
12.
Console.WriteLine("Type " + current.type);
13.
Console.WriteLine("=======================");
14.
current = current.next;
15.
counter++; }
16.
}}
‫الفــرا‬
‫ محمود رفيق‬.‫ أ‬/‫المادة العلمية إعداد‬
َّ
‫مساق تراكيب البيانات‬
‫أ كركم‬
‫‪38‬‬
‫السؤال مفتاح للعلوم كلها‪...‬‬
‫تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بذكرك ربنـا نحيــا‬
‫‪39‬‬
‫‪‬‬
‫الذكر لمن لبس الثياب الجديد‬
‫سمممنِ ل ِه ِ‪،‬ك‬
‫اللَّ ُهممم َّلكلل لممممكال ل‪،‬أممم ُك ك ل ممم لكك لك ل‬
‫نم ِه لَكللم‪ُ،‬ك‬
‫كنممركه م ِمَ َِك ل له م ِك‬
‫لسملللُ ل ِ‬
‫مَ لنممصك ُ‬
‫نهِ لكَكلل ك‪ُ،‬‬
‫لل ُ‬
‫عنذُك ِب ل ِ‬
‫كنركش ِلَ َِك لكش ِلَك لنصك ُ‬
‫سو ُل َّ ِ‬
‫صلَّى َّ‬
‫س ِعي ٍد ْال ُخ ْد ِر ِ رضي هللا عنه قال ‪َ ( :‬كانَ َر ُ‬
‫سل َّمالُ‬
‫َّللاُ َ‬
‫َ‬
‫سللَّ َم ِإ َذا ا ْسلتَ َج َّد ثَ ْوبًلا َ‬
‫علَ ْي ِه َو َ‬
‫ع ْن أَبِي َ‬
‫َّللا َ‬
‫س ْلوتَنِي ِه و أَ ْسلأَلُ َك ِم ْ‬
‫لن َخي ِْلر ِل َو َخي ِْلر َملا‬
‫لك ا ْل َح ْمل ُد و أَ ْن َ‬
‫صا أَ ْو ِع َما َمةً و ث ُ َّم يَقُو ُل ‪ :‬اللَّ ُهل َّم لَ َ‬
‫بِا ْس ِم ِه و ِإ َّما قَ ِمي ً‬
‫لت َك َ‬
‫صحيح أبو داود‬
‫صنِ َع لَهُ )‬
‫صنِ َع لَهُ و َوأَ ُ‬
‫عوذُ بِ َك ِم ْن َِر ِل َو َِر َما ُ‬
‫ُ‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫ترتيب عناصر القائمة‬
‫‪‬‬
‫‪‬‬
‫كملللا تعلمنلللا فلللي محاضلللرات سابقلللـة أن الترتيلللب لللله خوار ميلللات‬
‫مختلفة‪ ,‬هلذل الخوار ميلات يمكلن تطبيقهلا عللى أ نلون ملن أنلوان‬
‫هياكل البيانات و منها القائمة ‪.LinkedList‬‬
‫و ألن عناصللر القائمللة تحتللو علللى أكثللر مللن نللون مللن البيانللات‪,‬‬
‫فيمكن لنا أن نقوم بعملية الترتيب اعتمادا على هذل األنوان‪ ,‬فتصلبح‬
‫المقارنة حسب هذا النون أو ذاك كما يلي‬
‫)‪ (Current.id > front.id‬‬
‫)‪ (current.value > front.value‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫ترتيب عناصر القائمة‬
‫‪‬‬
‫الترتيب في حد ذاته قد يتم بطريقتين‪:‬‬
‫‪ ‬األولى‪ /‬أن نقوم بعمل ترتيب حسب القيم و بالتالي يتم تنفيلذ داللة التبلادل‬
‫‪ swap‬للقلليم دون التعامللل مللع تغييللر الكائنللات و هللذل الطريقللة األس لهل‬
‫فكريا و فهما‪.‬‬
‫‪ ‬الثانية‪ /‬أن يتم عمل ‪ swap‬للكائنات كاملة و هي طريقة تحتاج إلى الفهم‬
‫األعمق و لكنها أكثر احترافيـة‪.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫ بطريقة الكائنات‬Bubble sort ‫ترتيب عناصر القائمة من خالل‬
Head Current
a
Data 1
Second
2
c
d
b
Data k-1
Data k
Data k+1
e
Data n
4
3
1
null
Temp
Head
a
Data 1
b
Data k
c
Data k-1
d
Data k+1
e
Data n
null
‫ بطريقة الكائنات‬Bubble sort ‫ترتيب عناصر القائمة من خالل‬
Head Current
a
Data 1
Second
2
c
d
b
Data k-1
Data k
Data k+1
e
Data n
4
3
1
Temp
Node current = head;
Node temp;
for (int i = 0; i < lenght; i++) {
Car current = head;
while (current.Next != null) {
temp.data = current.Next.data;
current.Next.Value = current.Value;
current.Value = temp;
current = current.Next.Next; }
}
null
‫ بطريقة القيم‬Bubble sort ‫ترتيب عناصر القائمة من خالل‬
Head Current
a
Data 1
Front
c
b
Data k-1
Data k
d
Data k+1
e
Data n
null
Tempalue = Current.value;
Current.value = front.value;
Front.value = tempvalue;
...
‫ بطريقة القيم‬Bubble sort ‫ترتيب عناصر القائمة من خالل‬
45
1. class ListCar {
2. public void bubSort() {
3.
for (int i = 0; i < lenght; i++) {
4.
Car current = head;
5.
while (current.next != null) {
6.
if (current.value > current.next.value) {
7.
int TempValue = current.value;
8.
int TempId = current.id;
9.
String TempLocation = current.location;
10.
current.value = current.next.value;
11.
current.id = current.next.id;
12.
current.location = current.next.location;
13.
current.next.value = TempValue;
14.
current.next.id = TempId;
15.
current.next.location = TempLocation; }
16.
current = current.next; } } }
‫ا‬17.
‫الفــر‬
‫ محمود}رفيق‬.‫ أ‬/‫المادة العلمية إعداد‬
َّ
‫مساق تراكيب البيانات‬
‫أ كركم‬
‫‪46‬‬
‫السؤال مفتاح للعلوم كلها‪...‬‬
‫تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫بذكرك ربنـا نحيــا‬
‫‪47‬‬
‫‪‬‬
‫الذكر لمن لبس الثياب الجديد‬
‫سممممنِ ل ِه ِ‪،‬ك ك‬
‫اللَّ ُهمممم َّلكللمممم ل كال ل‪،‬أمممم ُك ك ل مممم لك لك ل‬
‫نم ِه لَكللم ك‪ ُ،‬ك‬
‫لسملللُ ل ِ‬
‫كنممرك له م ِمَ َِك ل له م َِك لنممصك ُ‬
‫نهِ لكَ لل ك‪ُ،‬‬
‫لل ُ‬
‫عنذُك ِب ل كنركش ِلَ َِك لكش ِلَك لنصك ُ‬
‫سو ُل َّ ِ‬
‫صلَّى َّ‬
‫س ِعي ٍد ْال ُخ ْد ِر ِ رضي هللا عنه قال ‪َ ( :‬كانَ َر ُ‬
‫سل َّمالُ‬
‫َّللاُ َ‬
‫َ‬
‫سللَّ َم ِإ َذا ا ْسلتَ َج َّد ثَ ْوبًلا َ‬
‫علَ ْي ِه َو َ‬
‫ع ْن أَبِي َ‬
‫َّللا َ‬
‫س ْلوتَنِي ِه و أَ ْسلأَلُ َك ِم ْ‬
‫لن َخي ِْلر ِل َو َخي ِْلر َملا‬
‫لك ا ْل َح ْمل ُد و أَ ْن َ‬
‫صا أَ ْو ِع َما َمةً و ث ُ َّم يَقُو ُل ‪ :‬اللَّ ُهل َّم لَ َ‬
‫بِا ْس ِم ِه و ِإ َّما قَ ِمي ً‬
‫لت َك َ‬
‫صحيح أبو داود‬
‫صنِ َع لَهُ )‬
‫صنِ َع لَهُ و َوأَ ُ‬
‫عوذُ بِ َك ِم ْن َِر ِل َو َِر َما ُ‬
‫ُ‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫البحث عن عنصر ما‬
‫‪‬‬
‫‪‬‬
‫تعرضللنا فللي المحاضللرات األولللى مللن المسللاق إلللى خوار ميللات‬
‫البحللث و كيفيللة تطبيقهللا علللى مجموعللة مللن العناصللر المخ نللة فللي‬
‫مصفوفة‪.‬‬
‫في هذل المحاضرة سنطبق المفهوم ذاته على مجموعة من العناصر‬
‫المخ نة داخل قائمة‪.‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬
‫البحث عن عنصر ما بطريقة التسلسل‬
1. class ListCar {
2. public Car Find(int WantedVlaue )
3.
{
4.
Car current = head;
5.
int flag = -1;
6.
while (current != null) {
7.
if (current.value == WantedVlaue) {
8.
flag = 1;
9.
break; }
10.
current = current.next; }
11.
if (flag == 1)
12.
return current;
13.
else
14.
return null;
}
15. }
‫الفــرا‬
‫ محمود رفيق‬.‫ أ‬/‫المادة العلمية إعداد‬
َّ
‫مساق تراكيب البيانات‬
‫أ كركم‬
‫‪50‬‬
‫السؤال مفتاح للعلوم كلها‪...‬‬
‫تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ‪...‬‬
‫مساق تراكيب البيانات‬
‫الفــرا‬
‫المادة العلمية إعداد‪ /‬أ‪ .‬محمود رفيق‬
‫َّ‬