4. شكلالقائمةالثنائية
Nextnull Data
البيانات هياكل أنواع|الثنائية المتصلة القائمة|DOUBLE LINDED LIST
NextPrev Data NextPrev Data
nullPrev Data
Head
tail
ملحوظة:
مؤشرtailهومؤشرنحتاجهفقطفيحالاﻹضافةعندانشاءالقائمة
ﻷولمرةحيثيكونالـراسوالذيليساويانﻻشئnullايانالقائمة
ﻻتحتويعلىايعنصراوعقدة
7. البيانات هياكل أنواع|الثنائية المتصلة القائمة|DOUBLE LINDED LIST
startnewNode = new Node()
newNode.next = head
Head.prev = newNode
Head = newNodePrint (list is empty)
end
If(head
!= null
YESNO
اﻹضافةالىبدايةالقائمة
8. اﻹضافةنهايةالقائمة)الخطوات/الخوارزمية(
1ـأنشأعقدةجديدة)يكونمؤشرnextوPrevفيهايشيرانالىnull(
2ـالتأكدمنانالقائمةفارغةاوﻻIf ( last!= null).أوIf ( tail!= null)
3ـإذاكانتالقائمةفارغةاجعلمؤشرlast/tailيشيرالىالعقدةالجديدةحيثستكونهيالقعدةاﻻخيرة.
وإﻻ...
4ـإذاكانتالقائمةتحتويعلىعقدسابقةإجعلمؤشرPrevفيالعقدةالجديدةيشيرالىlast)اخرعقدةفيالقائمة(
5ـإجعلمؤشرnextفيالعقدةاﻷخيرةيشيرالىالعقدةالجديدة
6ـإجعلمؤشرLast/tailيشيرالىالعقدةالجديدة)حيثستكونهيذيلالقائمة(
البيانات هياكل أنواع|الثنائية المتصلة القائمة|DOUBLE LINDED LIST
A B C D
Head Last
Z
اﻹضافةالىنهايةالقائمة
Prev
Next
9. البيانات هياكل أنواع|الثنائية المتصلة القائمة|DOUBLE LINDED LIST
startCreate newNode
newNode.prev = Last
Last.Next = newNode
Last = newNode
Print (list is empty)
Last = newNode
end
If(Last
= null)
NOYES
اﻹضافةالىنهايةالقائمة
10. البيانات هياكل أنواع|الثنائية المتصلة القائمة|DOUBLE LINDED LIST
300100 A null200 D
Head
null
200null Z
الفائدةمنالمؤشرالمؤقت
100 200 300
Prev
Next
Head = 100
1الـ لجعل ـhead=200التالي العقدة الى القائمة راس مؤشر لتحريك اية
الراس عنوان لحفظ مؤقت مؤشر وضع يجب)القائمة في عقدة أول موقع(
مؤقت مؤشر ننشاءtemplinkلحفظ)القائمة في عقدة أول موقع(
قيمة نجعل ـhead=مؤشر قيمةnextعقدة أول في200
المؤشر يتحرك بذلكheadالقائمة في الثانية الى اﻻولى العقدة من
Create node *templink = head
Head=head.next =200