You are on page 1of 19

‫اذا ارت النتقال الى‬

‫‪1‬‬ ‫بسم ال الرحمن الرحيم‬


‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬ ‫اليوم اقدم لكم شرح كامل ووافي عن‬
‫‪10‬‬
‫‪11‬‬
‫الـ‪linked list‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪1‬‬
‫اذا ارت النتقال الى‬

‫‪1‬‬
‫ل من‪:‬‬
‫سأقوم في هذا الكتاب بشرح ك ً‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬ ‫• مقدمة عن الــ ‪. linked list‬‬
‫‪5‬‬ ‫• الصيغة العامة للـ‪. linked list‬‬
‫‪6‬‬ ‫• شرح العمليات التالية‪:‬‬
‫‪7‬‬
‫‪8‬‬
‫‪-1‬كيفية ترتيب العناصر في الذاكرة باستخدام الـ‪. linked list‬‬
‫‪9‬‬ ‫‪-2‬اضافة عنصر في اول القائمة‪.‬‬
‫‪10‬‬ ‫‪-3‬اضافة عنصر وسط القائمة‪.‬‬
‫‪11‬‬
‫‪-4‬اضافة عنصر اخر القائمة‪.‬‬
‫‪12‬‬
‫‪13‬‬ ‫‪-5‬عملية زيارة القائمة وطبع محتوياتها‪.‬‬
‫‪14‬‬ ‫‪-6‬البحث عن عنصر داخل القائمة‪.‬‬
‫‪15‬‬ ‫‪-7‬حساب عدد عناصر القائمة‪.‬‬
‫‪16‬‬
‫‪17‬‬ ‫‪-8‬حذف عنصر من القائمة‪.‬‬
‫‪18‬‬ ‫بعد ذالك سأقوم بشرح الـــ‪. Double linked list‬‬
‫‪19‬‬
‫‪2‬‬
‫اذا ارت النتقال الى‬

‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪Linked list‬‬
‫‪6‬‬
‫‪7‬‬ ‫‪Linked list: is a data structure wherein each element‬‬
‫‪8‬‬ ‫‪contains both a data value and a pointer to next element in‬‬
‫‪9‬‬ ‫‪.the list‬‬
‫‪10‬‬
‫بعض مميزات الـ ‪ linked list‬مايلي ‪:‬‬
‫‪11‬‬
‫‪12‬‬ ‫تقوم بترتيب العناصر في الذاكرة حتى ولو كانت عشوائية‬
‫‪13‬‬ ‫هنا ل نحتاج لمعرفة عدد البيانات المدخلة كما في المصفوفات التي نحدد عدد‬
‫‪14‬‬
‫البيانات التي سوف ندخلها(نحدد حجم المصفوفة) لذالك يطلق على الــ‬
‫‪15‬‬
‫‪16‬‬ ‫‪ linked list‬المصفوفات الديناميكية‪.‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪3‬‬
‫اذا ارت النتقال الى‬

‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫قد يقول البعض كيف يتم ترتيب العناصر في الذاكرة حتى ولو كانت عشوائية؟‬
‫‪8‬‬
‫‪9‬‬ ‫الجواب هو أن كل عنصر يقوم بحفظ موقع العنصر الذي يليه(الذي بعدة)‪.‬‬
‫‪10‬‬ ‫وبتوضيح أكثر فلنرى مايلي‪:‬‬
‫‪11‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪4‬‬
‫لدينا قائمة الطلب التالية‪-:‬‬
‫اذا ارت النتقال الى‬ ‫الطالب الول‬ ‫الطالب الثاني‬ ‫الطالب الثالث‬

‫‪1‬‬ ‫بيـــانات‬ ‫بيـــانات‬ ‫بيـــانات‬


‫‪2‬‬ ‫‪0030‬‬ ‫‪0070‬‬ ‫‪next‬‬ ‫‪null‬‬
‫‪3‬‬
‫‪4‬‬
‫الطالب الول‬
‫‪5‬‬
‫‪6‬‬ ‫‪0030‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫بيــــــــــــــــــــــــــانات‬ ‫‪0070‬‬
‫‪10‬‬ ‫الطالب الثاني‬

‫‪11‬‬
‫‪0070‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫بيــــــــــــــــــــــــــانات‬ ‫‪Next‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫يتم كتابه عنوان الذاكرة(‪ )Base address‬التي‬ ‫الذاكرة‬
‫يوجد فيها الطالب التالي وهكذا‪.‬‬
‫‪5‬‬
‫اذا ارت النتقال الى‬
‫ألن سوف ندخل في الجد‪:‬‬
‫‪1‬‬
‫‪2‬‬ ‫هذه الصيغة العامة للــ ‪-:linked list‬‬
‫‪struct3nodeptr‬‬
‫{‬ ‫تعريف الرابط‬
‫‪;char 4‬‬ ‫‪info‬‬
‫‪;struct‬‬‫‪5node*next‬‬ ‫‪This is the pointer to the next node‬‬
‫};‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬ ‫سوف نبدأ ألن بأهم العمليات في الـــ ‪:linked list‬‬
‫‪9‬‬
‫أول ‪ :‬عملية إنشاء ‪ node‬وإضافة بداخل الــــ ‪ node‬الرقم ‪:50‬‬
‫‪10‬‬
‫سيتم ذالك من خلل الخوارزمية التالية‪:‬‬
‫‪11‬‬
‫‪12‬‬
‫‪)Initial)node*f‬‬
‫{‬
‫‪13‬‬
‫‪;) (f=getnode‬‬ ‫إنشاء ‪ new node‬من ثم وضع المؤشر ‪ f‬عليها‬
‫‪14‬‬
‫‪;f->link=null‬‬ ‫يقوم بوضع ذراع الـــ‪ f‬بــ ‪ null‬إشارة بأنة أخر عنصر في القائمة‬
‫‪15‬‬
‫‪16‬‬
‫‪;f->info=50‬‬ ‫يقوم بإدخال ‪ 50‬داخل الـ ‪ node‬التي يشير إليها المؤشر ‪f‬‬
‫};‬
‫‪17‬‬ ‫‪f‬‬
‫في هذا المثال قمنا بإنشاء الـ‪ node‬التالية‪:‬‬
‫‪18‬‬
‫‪50‬‬
‫‪19‬‬
‫‪6‬‬
‫‪f‬‬ ‫ثانياُ‪:‬عملية ربط الـ ‪ node‬أول القائمة‪:‬‬
‫اذا ارت النتقال الى‬
‫‪50‬‬ ‫لدينا هذه الـ ‪ node‬ونريد ربط ‪ node‬جديدة ووضعها إل ولى في القائمة‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪)Insert_B)node*f‬‬
‫‪4‬‬
‫{‬
‫‪5‬‬
‫‪;node*c‬‬
‫‪6‬‬
‫‪;)7(c=getnode‬‬
‫إنشاء ‪ new node‬من ثم وضع المؤشر‪ c‬عليها‬
‫‪8‬‬
‫‪;c->info=40‬‬
‫‪9‬‬ ‫يقوم بربط الـ‪ node‬التي أنشئنها بالـ ‪ node‬الولى في القائمة ‪first‬‬
‫‪;c->link=f‬‬
‫‪10‬‬
‫‪;f=c‬‬
‫‪11‬‬ ‫يقوم بنقل المؤشر ‪ f‬إلى الـ ‪ node‬التي ربطناها بالقائمة التي‬
‫أصبحت أول ‪ node‬في القائمة‬
‫‪12‬‬
‫}‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬ ‫ستكون القائمة كما يلي‪:‬‬
‫‪17‬‬ ‫‪f‬‬
‫‪18‬‬ ‫‪c‬‬ ‫‪50‬‬
‫‪19‬‬ ‫‪70‬‬
‫‪7‬‬
‫اذا ارت النتقال الى‬
‫ثالثاُ‪ :‬عملية ربط ‪ node‬وسط القائمة (ليس بأولها وليس بآخرها)‪:‬‬
‫هنا لدينا مثلً بيانات احد الطلب وكان رقمه ‪ 36‬ونريد إن نضعه في القائمة حسب الرقم التسلسلي لرقام الطلب سيكون‬
‫‪1‬‬ ‫الحل كما يلي‪:‬‬
‫‪2‬‬
‫‪)Insert_l)node*f‬‬
‫‪{ 3‬‬
‫‪4‬‬
‫‪;node*c,*p‬‬ ‫وضع البيانات داخل الـ‪node‬‬

‫‪5‬‬
‫‪;) (c=getnode‬‬
‫‪6‬‬
‫‪;c->info=30‬‬
‫إنشاء ‪ new node‬من ثم وضع المؤشر‪c‬‬

‫‪7‬‬
‫‪;p=f‬‬ ‫يقوم بوضع المؤشر ‪ p‬في الـ‪ node‬التي يشير إليها الـ ‪ f‬حتى يتم التنقل‬
‫‪8‬‬ ‫باستخدام المؤشر ‪ p‬في القائمة مما يحول دون ضياعها‬
‫‪9‬‬
‫‪)while)c->info‬‬ ‫‪> f->info && c->info > p->info‬‬

‫‪10‬‬
‫‪;p=p->link‬‬ ‫يقوم بنقل المؤشر ‪ p‬من الـ‪ node‬التي يشير إليها إلى الـ ‪ node‬التي تليها‬
‫‪11‬‬
‫‪;c->link=p->link‬‬
‫‪12‬‬ ‫يقوم بتنفيذها بعد توقف ‪ wile‬طبع ًا وهذا السطر يقوم بالتالي‪:‬‬
‫يقوم بربط ذراع الـ‪ node‬المراد ربطها بالـ ‪ node‬التي يشير إليها ذراع الـ ‪p‬‬
‫‪;p->link=c‬‬
‫‪13‬‬
‫‪} 14‬‬
‫يقوم بنقل ذراع المؤشر ‪ p‬من الـ‪ node‬التي كان يشير إليها إلى الـ‪ node‬التي‬
‫‪15‬‬ ‫تم ربطها(الـ‪)c‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬ ‫هذا السطر يقوم بالتالي‪ :‬طالما (‪ )c->info >f->info‬معلومات الـ‪ node‬التي يشير إليها المؤشر ‪ c‬اكبر من‬
‫معلومات الـ‪ node‬التي يشير إليها المؤشر‪ (&&( f‬و‬
‫‪19‬‬ ‫(‪ )c->info>p->linked->info‬معلومات الـ‪ node‬التي يشير إليها المؤشر ‪( c‬معلومات الـ ‪ node‬المراد ربطها‬
‫‪8‬‬ ‫بالقائمة) اكبر من معلومات الـ ‪ node‬التي يشير إليها ذراع المؤشر ‪p‬‬
‫اذا ارت النتقال الى‬ ‫بعد هذا كله راح تكون القائمة بهذا الشكل‪:‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬ ‫‪f‬‬
‫‪p‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬ ‫‪20‬‬ ‫‪30‬‬ ‫‪35‬‬ ‫‪40‬‬

‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬ ‫‪c‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬ ‫‪36‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪9‬‬
‫‪f‬‬
‫اذا ارت النتقال الى‬ ‫رابعاً‪ :‬عملية ربط‪ node‬في أخر القائمة‪:‬‬
‫‪20‬‬ ‫‪30‬‬ ‫‪35‬‬ ‫‪40‬‬ ‫لدينا هذه القائمة‪:‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬ ‫إحضار القائمة‬ ‫‪c‬‬
‫ونريد أن نربط الــ ‪ node‬التالية في أخر‬
‫‪4‬‬ ‫القائمة‪:‬‬
‫‪70‬‬
‫‪5‬‬
‫‪6‬‬‫‪)Insert_l)node*f‬‬
‫‪7‬‬‫{‬
‫‪;node*c‬‬ ‫وضع البيانات داخل الـ‪node‬‬
‫‪8‬‬
‫‪9‬‬‫‪;) (c=getnode‬‬
‫إنشاء ‪ new node‬من ثم وضع المؤشر‪ c‬عليها‬
‫‪10‬‬
‫‪;c->info=70‬‬
‫‪11‬‬
‫‪;l=f‬‬
‫طالما ذراع الــ‪ l‬موجودة‬
‫‪12‬‬
‫‪)while)l->link !=NULL‬‬
‫‪13‬‬ ‫يقوم بنقل المؤشر ‪ f‬من الــ‪ node‬التي يشير عليها إلى الــ‪ node‬التي تليها إلى إن‬
‫يصل إلى أخر القائمة ( حتى يشير إلى أخر ‪ node‬في القائمة)عند عدم تحقق الشرط‬
‫‪14‬‬
‫‪;l=l->link‬‬

‫‪15‬‬
‫‪;l->link=c‬‬ ‫يقوم بربط ذراع الــ ‪ l‬التي وصلت إلى أخر القائمة بــ ‪ node‬التي أنشئنها‬
‫‪16‬‬
‫‪;c->link=NULL‬‬
‫‪17‬‬ ‫يقوم بربط ذراع الــ‪ node‬بــ ‪ null‬لنها أخر ‪ node‬في القائمة بمعنى أخر‬
‫إن ذراع الـ‪ c‬ل ترتبط بــ ‪ node‬أخرى‬
‫}‬
‫‪18‬‬
‫‪19‬‬ ‫يقوم بوضع المؤشر ‪ l‬حيث يشير المؤشر ‪ f‬وذالك حتى يتم التنقل باستخدام المؤشر ‪ l‬إلى‬
‫أخر القائمة وذالك تفادين لعدم ضياع القائمة حيث أذا تم نقل العنصر ‪ f‬من مكانة في أول‬
‫‪10‬‬
‫عنصر في القائمة فإننا سوف نفقد القائمة بأكملها وذالك خطأ فادح جداً‪.‬‬
‫اذا ارت النتقال الى‬ ‫بعد هذا كله راح تكون القائمة بهذا الشكل‪:‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬ ‫‪f‬‬ ‫‪l‬‬
‫‪5‬‬
‫‪20‬‬ ‫‪30‬‬ ‫‪35‬‬ ‫‪40‬‬
‫‪6‬‬
‫‪7‬‬
‫‪c‬‬
‫‪8‬‬
‫‪70‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪11‬‬
‫اذا ارت النتقال الى‬
‫خامساً‪:‬عملية زيارة القائمة‬
‫ألن سوف نقوم بعملية المرور على كل عناصر القائمة وطبع ما يوجد بداخلها من معلومات‪:‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬ ‫‪)Traverse)node*f‬‬
‫{‬
‫‪5‬‬ ‫‪;node*c=f‬‬
‫‪6‬‬ ‫طالما ذراع المؤشر ‪ c‬ل تساوي ‪null‬‬
‫‪)while)c->link !=NULL‬‬
‫‪7‬‬ ‫{‬
‫‪8‬‬ ‫‪;cout<<c->info‬‬ ‫يقوم بطبع المعلومات الموجودة في الـ‪node‬‬
‫التي تشير إليها الـ‪c‬‬
‫‪9‬‬ ‫‪;c=c->link‬‬
‫}‬
‫‪10‬‬ ‫}‬ ‫يقوم بنقل ذراع المؤشر ‪ c‬إلى الـ ‪ node‬التي تليه‬
‫‪11‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬ ‫وضعنا القوسين ليتم تنفيذ ما بينهما باكملة اذا تحقق شرط ‪while‬‬

‫‪18‬‬
‫‪19‬‬
‫‪12‬‬
‫اذا ارت النتقال الى‬
‫سادساً‪:‬معرفة عدد عناصر القائمة‬
‫هنا سوف نقوم بعد عدد عناصر القائمة(عدد الـ‪) node‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3)Traverse)node*f‬‬
‫‪4{intcount; =0‬‬ ‫عرفنا العداد الذي سوف يتضاعف طالما‬
‫الشرط تبع ‪ while‬محقق وهيئنه وذالك‬
‫‪5‬‬ ‫بإعطائه القيمة صفر حتى أذا ما تحقق شرط‬
‫‪)While)c-> !=NULL‬‬ ‫‪ while‬يقوم بطبع صفر ‪node‬‬
‫{‪6‬‬
‫‪7;++count‬‬ ‫طالما ذراع الــ‪ c‬موجودة‬

‫‪8;c=c->link‬‬
‫}‪9‬‬ ‫يقوم بمضاعفة العداد من الصفر إلى أن تنتهي‬
‫القائمة (عدم تحقق شرط ‪)while‬‬
‫}‪10‬‬
‫‪11‬‬ ‫يقوم بنقل ذراع المؤشر ‪ c‬إلى الـ ‪ node‬التي تليه‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬ ‫وضعنا القوسين ليتم تنفيذ ما بينهما بكاملة أذا تحقق شرط ‪while‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪13‬‬
‫سابعاً ‪ :‬البحث عن عنصر داخل القائمة‪:‬‬
‫اذا ارت النتقال الى‬

‫‪1‬‬
‫‪2‬‬
‫‪)Search)node*f‬‬ ‫‪, int key‬‬
‫{‬
‫‪3‬‬
‫‪;node*c=f‬‬ ‫ندخل المعلومات التي نريد البحث عنها مع ملحظة بأنها من نوع ‪int‬‬
‫‪4‬‬
‫‪;cin>>key‬‬
‫‪5‬‬
‫‪6‬‬
‫‪)while)c->link‬‬ ‫‪!= NULL‬‬

‫‪{7‬‬
‫‪)if)key == c->info‬‬ ‫اذا كانت البيانات المدخلة متطابقة مع بيانات الـ‬
‫{‪8‬‬ ‫‪ node‬التي يقف عليها الـ ‪c‬‬
‫‪9 c‬‬
‫‪;return‬‬
‫}‬
‫‪10‬‬
‫‪else‬‬
‫{‪11‬‬
‫‪;c=c->link‬‬ ‫نقل المؤشر ‪ c‬إلى الـ ‪ node‬التي تليه‬
‫‪12‬‬
‫}‬
‫‪13‬‬ ‫}‬
‫إخراج القيمة ‪ NULL‬أذا لم نجد العنصر‬
‫‪;return null‬‬
‫‪14‬‬
‫}‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪14‬‬
‫ثامناً‪:‬حذف عنصر من القائمة‬
‫اذا ارت النتقال الى‬

‫‪1 )node*f , int key‬‬


‫‪)Delete‬‬
‫‪{2‬‬ ‫ابحث في القائمة ‪ f‬عن العنصر ‪key‬‬
‫‪;node*d‬‬
‫‪3‬‬
‫‪)d=search)f‬‬ ‫‪, key‬‬
‫‪4‬‬ ‫هذا نعتبره كوعاء نضع بداخلة البيانات التي تم البحث‬
‫عنها داخل القائمة ونضعها في الـ‪ d‬بعد ذالك نقوم‬
‫‪5‬‬
‫‪)If)d‬‬ ‫بالعمليات على الـ ‪( d‬الـ‪ d‬هي البيانات التي نريد‬
‫{‬ ‫حذفها)‬
‫‪6‬‬
‫‪)if)d==f‬‬
‫‪7‬‬
‫‪;f=f->link‬‬
‫‪8‬‬
‫‪else‬‬
‫إذا كان الـ ‪ d‬موجود في الـ‪ node‬التي يشير‬
‫إليها الـ ‪( f‬أول عنصر)‬
‫‪9‬‬
‫{‬
‫‪10‬‬
‫‪)p=getprv)d , f‬‬ ‫نقوم فقط بنقل المؤشر ‪ f‬الى الـ‪ node‬التي تليه‬
‫‪11‬‬
‫‪p->link=d->link‬‬
‫وبذالك كمنا بحذف النود التي كان فيها المؤشر ‪f‬‬

‫‪12‬‬
‫}‬ ‫هذا لربط القائمة اذا كان الـ ‪( d‬الذي نريد حذفه)بالوسط‬
‫‪)free)d‬‬
‫‪13‬‬
‫}‬
‫حذف ‪d‬‬
‫‪14‬‬
‫‪else‬‬
‫‪Display not font‬‬
‫‪15‬‬
‫}‬
‫‪16‬‬
‫يقوم بطبعها عندما ل يجد العنصر المراد حذفه‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪15‬‬
Double linked list
‫اذا ارت النتقال الى‬

1 double linked list ‫ الصيغة العامل للـ‬: ً‫اول‬


2 struct nodeptr
3 {
;char info
4 ;struct node*next This is the pointer to the next node
5 struct node* ;proviso
;}
6 This is the pointer to theproviso node
7
8
9 double linked list ‫الشكل العام للـ‬
10
11 f
12
13
14
15
16
17
18
19
16
‫اذا ارت النتقال الى‬ ‫ثانياً‪:‬لربط ‪ node‬في قائمة ‪ double linked list‬نقوم بالتالي‬
‫‪1‬‬ ‫قبل ذالك دعونا نعرف التالي‪:‬‬
‫‪2‬‬ ‫•(‪ )c->link‬معناه ذراع الـ ‪. c‬‬
‫‪3‬‬ ‫•(‪)c->llink‬معناه ذراع الـ ‪ c‬التي في اليسار‪.‬‬
‫‪4‬‬ ‫•(‪)c->rlink‬معناه ذراع الـ‪ c‬التي في اليمين‪.‬‬
‫‪......................................................................‬‬
‫‪5‬‬ ‫لكي نقوم بربط ‪ node‬نقوم بالتالي‪:‬‬
‫‪6‬‬
‫‪c->rlink=p->rlink.)1‬‬
‫‪7‬‬
‫‪c->llink=p.)2‬‬
‫‪8‬‬
‫‪p->rlink=c.)3‬‬
‫‪9‬‬
‫‪c->rlink->llink=c.)4‬‬
‫‪10‬‬
‫‪11‬‬ ‫قد يسال البعض ما معنى (‪ )c->rlink->llink=c‬راح أخبركم هذا معناه‪:‬‬
‫هذه تشير إلى الذراع اليسرى تبع الـ‪ node‬التي تشير إليها الـ‪ node‬التي عليها المؤشر ‪ c‬من جهة اليمين ‪12‬‬
‫لوضعها‬
‫‪13‬‬ ‫على الـ ‪ node‬التي يشير اليها المؤشر ‪. c‬‬
‫‪14‬‬ ‫اذا مافهمتو من خلل الشرح بواسطة الكلم راح تفهمو انشاء ال من خلل الرسم التالي‪:‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫الصفحة التالية‬
‫‪18‬‬
‫‪19‬‬
‫‪17‬‬
‫ملحظة ‪:‬سوف يظهر كل سطر من الوامر السابقة من ثم تظهر العملية (التي ستتم على القائمة )في الرسم‬
‫اذا ارت النتقال الى‬
‫لذالك يرجا التركيز‪.‬‬
‫‪1‬‬ ‫‪f‬‬ ‫‪p‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬ ‫‪c‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪c->rlink=p->rlink.)1‬‬
‫‪12‬‬
‫‪13‬‬
‫‪c->llink=p.)2‬‬
‫‪14‬‬
‫‪p->rlink=c.)3‬‬
‫‪15‬‬
‫‪16‬‬
‫‪c->rlink->llink=c.)4‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪18‬‬
‫اذا ارت النتقال الى‬
‫قام بشرح المحاضرة‪:‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬ ‫• الطالب‪:‬محمد راشد صالح داود‬
‫‪5‬‬ ‫• جامعة صنعاء ‪ ---------‬اليمن‪.‬‬
‫‪6‬‬ ‫• كلية الحاسب اللي‪.‬‬
‫‪7‬‬
‫‪8‬‬
‫• سنة ثانية ـــــــــ المجموعة التاسعة‪.‬‬
‫‪9‬‬ ‫• شرح المحاضر مستنبط من شرح الدكتور فضل باعلوي‬
‫‪10‬‬ ‫• مع شكري الخاص وشكر المجموع التاسعة الى الدكتور فضل باعلوي‪.‬‬
‫‪11 you have any question or feeler pleas send to me by‬‬
‫‪If‬‬
‫‪:12‬‬
‫‪this email‬‬
‫‪13‬‬
‫‪mohammed2008_dawod@hotmail.com‬‬
‫‪14‬‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪19‬‬

You might also like