2bytesprog2 course_2014_c7_double_lists
TRANSCRIPT
Insert a Node
Data
next
pre
v
Data
next
pre
v
Data
next
pre
v
Data
next
pre
v
L_E
Data
next
pre
v
L_S
Temp
procedure D_L_Insert ( var L_S, L_E: D_P; KEY:integer);
var
Temp , S : D_P;
Located: Boolean;
begin
new(Temp);
temp^.ID:=KEY;
temp^.next:=nil;
temp^.prev:=nil; 15
next
pre
v
Temp
If L_S=nil then begin
L_S:=Temp;
L_E:=Temp;
end
Else
begin
S:=L_S;
Located:=False;
while (S<>nil) and (not Located) do if S^.id < key then
S:=S^.next
else
Located:=True;
Temp^.next:=S; +2
points
If S=L_S then
begin
L_S^.prev:=Temp;
L_S:=Temp;
end
Else if S=nil then
begin
Temp^.prev := L_E;
L_E^.next := Temp;
L_E:=Temp;
end
Else
begin
Temp^.prev := S^.prev;
S^.prev^.next := Temp;
S^.prev := Temp;
end;
end;
end; {procedure}
procedure D_L_Delete ( var L_S,L_E: D_P; KEY:integer; var flag :char);
var
Temp , S:D_P;
begin
If L_S=nil then
flag:=‘3’ Else if KEY =L_S^.id then begin
Temp:=L_S;
L_S:=L_S^.next; ls^.prev:=nill ;
Dispose(Temp);
flag:=‘2’;
If L_s=nil then
L_E:=nil;
Else
L_s^.prev:=nil; end
Else if KEY = L_E^.id then
begin
Temp:=L_E;
L_E:=L_E^.prev; L_E^.next:=nil; Dispose(Temp);
Flag:=‘2’;
end
Else
begin
S:=L_S;
while (S<>nil) and (S^.id <> KEY ) do
S:=S^.next;
if S=nil then
flag:=‘1’; else
begin
S^.next^.prev:=S^.prev;
S^.prev^.next:=S^.next; Dispose(S);
flag:=‘ 2 ’; end;
end;
end; {procedure}
Homework:
+15 points
البحث عه عنصر ما في سلسة مترابطة اكتب اجرائية : مه طرفيه
Search( var L_s, L_E : D_P ; Key:integer;
var p: D_P ; var flag: char);
, بحيث تحفظ االجرائية مؤشر على مكان العنصر المراد -وجد العنصر-فشل) وتعيد محرف يعبر عه حالة البحث
( السلسلة فارغة
Group : group link
Mobile phone- Kinan : 0994385748
Facebook account : kinan’s account
2 bytes team