الحلقات المتسلسلة أحادية الاتجاه 3

السلام عليكم

كيف أحوالكم يا شباب
إن شاء الله بخير
اليوم سينضم إلى فصلنا شخصية جديدة فأرجوا أن ترحبوا به
اسمه عبده أحياناً بناديه عبود
على العموم الأخ عبده شخصية عرضية comparese
(الشخصية العرضية أسلوب أدبي يحاول تلطيف المقالات العلمية)
ممكن أن تروه في أي مكان
مؤدب وشاطر وبيسمع الكلام
أتمنى أن تعاملوه بشكل جيد لأنه ممكن يزعل بسرعة
وساعتها ما تقولوا إني ما قولتلكم أنه بيزعل
بعد أن تم التعارف بينكم
نبدأ في درسنا الجديد
نريد بناء دالة تحول السلسلة إلى مصفوفة
بالطبع يجب أن يكون لدينا علم مسبق بطول السلسلة
يمكننا فعل ذلك في نفس الدالة
ستكون الدالة على الشكل التالي

public Object[] listToArray(){

 SNode temp=head;

 int length=0;

 while(temp.getNext() !=null){

 	++length;

 	temp=temp.getNext();

 }

 temp=head;

 Object array[]=new Object[length];

 for(int i=0;i

نلاحظ أننا في كل مرة أننا نتكبد مشقة حساب طول السلسلة
لماذا لا نرتاح من هذا الموضوع
كيف يا أستاذ ؟؟(الأخ عبده بيحاول يكون مجتهد)
انتظر يا عبده حتى أكمل شرحي
راح نحتاج متغير اسمه length
في بداية ما ننشئ السلسلة سيساوي صفر
ما تأثير الزيادة والنقصان في السلسلة على قيمة المتغير؟
الزيادة تعني زيادة القيمة في المتغير length بواحد
والنقصان يعني نقصان القيمة في المتغير length بواحد
تصبح الدالة listToArray بالشكل التالي

public Object[] listToArray(){

 SNode temp=head;

 Object array[]=new Object[length];

 for(int i=0;i

موضوع الحلقات الرأس والذيل
ألا تجدون معي أنه متعب جداً
وهناك مقارنات كثيرة
هناك طريقة تخلصنا من هذا العناء
لكنها ستكلفنا كائنين من النوع SNode
ليست كلفة عالية كما يظهر
تعالوا نستكشف الطريقة الجديدة
سنقوم بعمل الحلقتين كالتالي

SNode head=new SNode(null,null);

SNode tail=new SNode(null,null);

head.setNext(tail);

الآن عندما أريد أن أضيف حلقة جديدة في بداية السلسلة سأقوم بالتالي

SNode newNode=new SNode(object,head.getNext());

head.setNext(newNode);

وعملية الحذف من البداية ستكون بنفس السهولة

Object obj=head.getNext().getElement();

head.setNext(head.getNext().getNext());

return obj;

بالنسبة للذيل نجد أننا سنواجه مشكلة ماهي؟(سؤال إضافي من علامتين)
سأتكلم عنها في المرة القادمة

تحياتي
م.علاء

2 Responses to “الحلقات المتسلسلة أحادية الاتجاه 3”

  1. فكتوريا قال:

    كيف اكتب هيكل بياني لل (Deleting anode from any position in double linked list) ولكم جزيل الشكر

  2. admin قال:

    غير واضح السؤال

Leave a Reply