القائمة الرئيسية

الصفحات

ما هى الداتا ستركتشر data structure

 

code

فى حال نسيت ال Data structure ومحتاج تراجعها.. هنلخص اهم ال Data structures الأساسية اللى لازم تكون فاهمها كويس وهنبتدي بال linked list

- Linked List
من ال linear data structure ومعني linear ان العناصر اللى جواها مترتبه بشكل تسلسلي مش هرمي زى ال trees مثلا.
بتتكون من مجموعه من ال nodes كل node بتتكون من داتا معينه (رقم , كلمة , object ) و reference او pointer بيشاور على ال node اللى بعدها.
فى حالة ال doubly linked list بيكون عندنا اثنين reference او pointers واحد بيشاور على ال node اللى قبليه وواحد بيشاور على ال node اللى بعدية.
اول node بتكون مميزه وبيكون اسمها ال head او بداية ال linked list وال reference بتعها بيكون فاضي او بيشاور على null
- when to use?
امتي نستخدمها ... اوقات كتير ممكن يكون عندنا أكتر من خيار فى إستخدام ال data structure بس إحتياجاتك فى اللى انت عايز تعمله وال متغيرات اللى معاك هيا اللى بتحدد.
ممكن نستخدم ال linked list فى حال لو انت مش عارف انت عايز تدخل كام عنصر بالظبط ... هدخل 10 ولا 20 ولا 1000
وفى الحاله ديه مش بيكون كويس انك تسخدم ال array مثلا لان ال array : fixed size
يعنى قبل مستخدمها لازم تكون عارف انت هتدخل كام عنصر فيها بالظبط .. او هتضطر بعد كده انك تعمل إعاده بناء ال array فى حالة لو العدد اللى محتاج تدخله أكبر من حجم ال array وده هيكون مكلف فى الوقت...
او مثلا تيجي تستخدم ال array وتلاحظ انك دخلت 3 او 4 عناصر بس وباقي ال array فاضيه وده بردو مكلف بالنسبة لل memory لانو مكان متشال على الفاضي وانت مش هتستخدمه.....
- Some operations to use
العمليات اللى ممكن تعملها فى ال linked list
1-- Traverse:
يعنى انك تمر على عناصر ال linked list
وده بتقدر تعمله عن طريق انك
- تخزن ال head فى temp node
- وكل ما ال node الموقته تكون مش فاضيه تساويها بال next بتاعها
بتكون حاجه شبه كده
struct node *temp;
if(head == NULL)
{
printf("List is empty.");
return;
}
temp = head;
while(temp != NULL)
{
temp = temp->next;
}
2-- insertion:
عندنا 3 أنواع من الإدخال ... فى الأول و فى الأخر و فى نص ال linekd list
الخطوات اللى ممكن نمشي عليها قبل منبدأ فى إدخال أى عنصر:
1- انك تتأكد ان ال node اللى انت هتدخلها مش null
2- لو لقيت داتا موجوده يبقا لازم تبنى node جديده وتخزن فيها الداتا ويكون ال pointer مش بيشاور على حاجه.
3- تقف عند ال index اللى انت عاوز تحط ال node فيه وتخلي ال
newNode.next = previousNode.next
يعنى الجديد هيشاور على اللى بيشاور عليه اللى قبل كده.... يبقا فى كده فيه إثنين بيشاورا على حاجه واحده
4- نخلي ال
previousNode.next = newNode
يعنى اللى قبل ال node الجديدة هيشاور عليها.
3-- Deletion
من اهم العمليات انك تمسح node سواء من الأول او الأخر او نص ال linked list
1- هتعمل traverse على ال linked list لحد متوصل لل index اللى انت هتمسحه ناقص واحد ....
يعنى هتقف على اللى قبل اللى هتمسحه..
2- بعد كده تخلي ال
prevNode.next = deletedNode.next

تعليقات